2011-02-10 5 views
6

Ho bisogno di simulare un modulo simile all'interfaccia vista durante l'installazione di qualsiasi software. Ci sono i pulsanti Avanti e Indietro e tutte le informazioni inserite dall'utente vengono elaborate solo quando lui/lei fa clic sul pulsante Fine.
Quando l'utente fa clic sul pulsante Indietro, gli vengono mostrate le informazioni inserite in precedenza.
Quando l'utente fa clic sul pulsante successivo, viene visualizzata la schermata successiva. Tutte le informazioni visualizzate sono mostrate in un unico modulo.C# ha bisogno di consigli su un semplice problema nella navigazione dei moduli

Ci sono 3 sezioni che ho bisogno di mostrare all'utente.

  • Sezione 1 - premendo il pulsante accanto mostrerà sezione 2
  • Sezione 2 - premendo il pulsante indietro mostrerà la sezione 1 e premendo il pulsante accanto mostrerà la sezione 3
  • Sezione 3 - premendo il pulsante precedente mostrerà la sezione 2 e premendo il pulsante fine elaborerà tutte le informazioni inserite nella sezione 1,2 e 3.

Attualmente in programma di implementare la soluzione di seguito elencati:

  1. Creare una forma
  2. Aggiungi tutto l'elemento per la sezione 1 e di creare un evento pulsante accanto che nasconde tutta l'elemento indicato nel paragrafo 1 tra cui il pulsante e mostrano tutta la sezione elementi 2.
  3. Crea evento pulsante per il pulsante indietro per la sezione 2 in modo che nasconda tutti gli elementi nella sezione 2 incluso il pulsante e visualizza tutti gli elementi nella sezione 1 e il pulsante successivo per nascondere tutti gli elementi nella sezione 2 incluso il pulsante e mostra tutto l'elemento nella sezione 3
  4. Creare un evento pulsante simile per la sezione 3

C'è una soluzione migliore di quella descritta sopra. Se sì, descrivi l'approccio. Qualsiasi aiuto fornito sarà molto apprezzato.

+1

Quello che stai cercando è chiamato "Wizard". Potresti riuscire a trovare alcuni buoni tutorial che cercano con quella parola chiave. – Justin

+0

Se si tratta di un'applicazione Web (non è possibile distinguerla dalla tua domanda), esiste un controllo della procedura guidata nella libreria di controllo web standard che farà esattamente ciò che desideri. –

+0

Sto facendo un'applicazione desktop. Grazie justin, wizard è esattamente quello che voglio. Grazie per l'aiuto. – abduls85

risposta

2

Un modo per raggiungere questo obiettivo utilizza un controllo struttura a schede e nascondendo le schede in modo che l'utente non può navigare tra di loro e invece si spostano da un controllo scheda al successivo in modo programmatico.

Uso il controllo KryptonNavigator poiché fornisce molte modalità diverse che semplificano la rimozione delle schede in modo che solo il contenuto della scheda sia visibile, ecc. Tuttavia, dovrebbe essere possibile nascondere le schede del controllo struttura a schede standard.

KryptonNavigator

+0

l'ho usato in passato. Non ho usato alcun controllo della procedura guidata. La cosa bella di questo è che puoi facilmente separare i controlli per scheda nel designer. Una grande soluzione semplice. – jrsconfitto

0

È possibile creare controlli personalizzati per le tre schermate diverse, quindi è possibile aggiungere quei 3 controlli al modulo, rendendo più semplice nascondere/mostrare i controlli appropriati.

In alternativa, è possibile creare tre moduli separati, quindi visualizzare i moduli in ordine ed eseguire le azioni nella funzione programmi Main() anziché utilizzare un modulo come oggetto di avvio. Come

static void Main() 
{ 
    Form1 f1 = new Form1(); 
    if (f1.ShowDialog() == DialogResult.OK) 
    { 
    // do actions 
    // show next form 
    // etc. 
    } 
} 
+1

Cosa succede se l'utente preme il pulsante Indietro ... Deve avere bisogno di lavorare sui risultati delle finestre di dialogo per tali situazioni e può diventare ingombrante ... Invece un controllo del controllo/controllo della scheda sarà utile. –

0

È possibile utilizzare UserControl struttura per ottenere questo tipo di comportamento. È possibile aggiungere un semplice controllo del pannello e modificare il contenuto del pannello in base ai pulsanti premuti. Puoi semplicemente modificare il contenuto del pannello usando yourPanel.Controls.Add(your_user_control). Così è possibile implementare diversi set di controllo su una winform.

Grazie

0

Sì, come ha detto Iain, il controllo Wizard è probabilmente la scelta migliore, ma se questo non funziona, prova a cercare MultiView o controlli Accordian. Eseguono controlli specifici per nascondere/mostrare sezioni su un modulo, in modo da non dover passare da un modulo all'altro e quindi restano nello stesso ambito per tutto il tempo. Rende i campi popolati molto più facilmente.