Creación de asistentes para Windows Forms en C#

Resuelto Ravi asked hace 14 años • 0 respuestas

Soy nuevo en la creación de asistentes para aplicaciones Windows Forms en C# .Net. Entonces no tengo ninguna idea sobre la creación de asistentes. Por favor, dame algunas ideas sobre cómo crear un asistente múltiple.

Saludos ravi

Ravi avatar Feb 26 '10 16:02 Ravi
Aceptado

Muchas maneras de hacerlo. Es posible crear un formulario para cada paso del asistente, pero es muy complicado. Y feo, mucho parpadeo cuando el usuario cambia de paso. Para que cada paso un UserControl pueda funcionar, simplemente cámbielos dentro y fuera de la colección de Controles del formulario. O haga uno de ellos Visible = verdadero para cada paso. Sin embargo, el diseño de UC tiende a complicarse: es necesario agregar propiedades públicas para cada elemento de la interfaz de usuario.

La forma fácil y RAD es utilizar un TabControl. Funciona muy bien en el diseñador ya que le permite cambiar de pestaña en el momento del diseño y colocar controles en cada pestaña. Cambiar de paso es trivial, simplemente cambie la propiedad SelectedIndex. Lo único que no es trivial es ocultar las pestañas en tiempo de ejecución. Aún es fácil de hacer procesando un mensaje de Windows. Agregue una nueva clase a su formulario y pegue el código que se muestra a continuación. Compilar. Suelte 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);
  }
}
Hans Passant avatar Feb 26 '2010 14:02 Hans Passant
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);
    }
}
Cluster avatar Jun 28 '2012 14:06 Cluster

Debe crear el suyo propio para satisfacer sus propias preferencias. Un consejo será que cree un formulario base llamado "frmWizard" y luego todas las ventanas del asistente heredarán de él. Debe colocar objetos comunes u objetos de asistente en la clase base y modificarlos o anularlos en la clase derivada si es necesario.

Jojo Sardez avatar Feb 26 '2010 09:02 Jojo Sardez