web-dev-qa-db-fra.com

Création d'assistants pour Windows Forms en C #

Je suis nouveau dans la création d'assistants pour l'application Windows Forms dans C # .Net. Je n'ai donc aucune idée de la création d'un assistant. Veuillez me donner quelques idées sur la création d'un assistant multiple.

Cordialement, ravi

33
Ravi

Beaucoup de façons de le faire. La création d'un formulaire pour chaque étape de l'assistant est possible, mais très maladroite. Et moche, beaucoup de scintillement lorsque l'utilisateur change de pas. Faire de chaque étape un UserControl peut fonctionner, il vous suffit de les basculer dans et hors de la collection Controls du formulaire. Ou rendez l'un d'eux Visible = vrai pour chaque étape. La conception UC a tendance à être compliquée, vous devez ajouter des propriétés publiques pour chaque élément de l'interface utilisateur.

La manière simple et RAD consiste à utiliser un TabControl. Fonctionne très bien dans le concepteur car il vous permet de basculer entre les onglets au moment de la conception et de supprimer les contrôles sur chaque onglet. Les étapes de changement sont triviales, changez simplement la propriété SelectedIndex. La seule chose non triviale est de masquer les onglets au moment de l'exécution. Toujours facile à faire en traitant un message Windows. Ajoutez une nouvelle classe à votre formulaire et collez le code ci-dessous. Compilez. Supprimez le nouveau contrôle de la haut de la boîte à outils sur votre formulaire.

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);
  }
}
132
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);
    }
}
29
Cluster

Vous devez créer le vôtre pour répondre à vos propres préférences. Une astuce sera pour vous de créer un formulaire de base nommé comme "frmWizard" puis toutes vos fenêtres de l'assistant en hériteront. Vous devez placer des objets communs ou des objets Assistant sur la classe de base et les modifier\remplacer sur la classe dérivée si nécessaire.

1
Jojo Sardez