c# - subformulario - pasos para crear un formulario en access
Crear asistentes para formularios de Windows en C# (3)
Soy nuevo en la aplicación Creating Wizards for Windows Forms en C # .Net. Entonces no tengo ninguna idea en la creación del asistente. Por favor, dame algunas ideas sobre cómo crear el asistente múltiple.
Saludos, ravi
Muchas formas de hacerlo. Crear un formulario para cada paso del asistente es posible, pero muy incómodo. Y feo, muchos parpadeos cuando el usuario cambia el paso. Al hacer que cada paso de un UserControl pueda funcionar, simplemente los cambia dentro y fuera de la colección Controls del formulario. O haga que uno de ellos sea visible = verdadero para cada paso. Sin embargo, el diseño de UC tiende a complicarse, debe agregar propiedades públicas para cada elemento de UI.
La manera fácil y RAD es usar un TabControl. Funciona muy bien en el diseñador ya que le permite cambiar las pestañas en el momento del diseño y soltar los controles en cada pestaña. Cambiar los pasos es trivial, simplemente cambie la propiedad SelectedIndex. Lo único que no es trivial es ocultar las pestañas en tiempo de ejecución. Todavía es fácil hacerlo procesando un mensaje de Windows. Agregue una nueva clase a su formulario y pegue el código que se muestra a continuación. Compilar. Coloque el nuevo control desde la parte superior de la caja de herramientas en su formulario.
using System;
using System.Windows.Forms;
class WizardPages : TabControl {
protected override void WndProc(ref Message m) {
// Hide tabs by trapping the TCM_ADJUSTRECT message
if (m.Msg == 0x1328 && !DesignMode) m.Result = (IntPtr)1;
else base.WndProc(ref m);
}
}
Necesita crear uno propio para satisfacer sus propias preferencias. Un consejo será que cree una forma base llamada "frmWizard", entonces todas las ventanas del asistente heredarán de ella. Debería poner objetos comunes u objetos de asistente en la clase base y modificar / anularlos en la clase derivada si fuera necesario.
class WizardPages : TabControl
{
protected override void WndProc(ref Message m)
{
// Hide tabs by trapping the TCM_ADJUSTRECT message
if (m.Msg == 0x1328 && !DesignMode) m.Result = (IntPtr)1;
else base.WndProc(ref m);
}
protected override void OnKeyDown(KeyEventArgs ke)
{
// Block Ctrl+Tab and Ctrl+Shift+Tab hotkeys
if (ke.Control && ke.KeyCode == Keys.Tab)
return;
base.OnKeyDown(ke);
}
}