2009-07-05 17 views
10

Come creare un controllo struttura a schede con un numero dinamico di schede in Visual Studio C#?Creazione di un controllo struttura a schede con un numero dinamico di schede in Visual Studio C#

Ho un database con una tabella customers. Devo creare un modulo che mostri le schede con le prime lettere del cognome dei clienti (devono essere presenti solo le prime lettere, per le quali sono presenti voci nella tabella). Ogni scheda dovrebbe contenere un controllo DataGrid con i clienti corrispondenti. Mi collego al database usando DataSet.

Dove dovrei inserire lo snippet di codice che genererebbe tali schede? Posso farlo con il controllo a schede esistente o devo creare un controllo personalizzato?

risposta

16

È possibile generare schede dinamiche con il TabControl esistente. Ecco un esempio di come può essere fatto in una sorta di forma di pseudo codice ...

TabControl tabControl = new TabControl(); 
tabControl.Dock = DockStyle.Fill; 

foreach (Char c in lastNameList) 
{ 
    TabPage tabPage = new TabPage(); 
    tabPage.Text = c.ToString(); 

    DataGrid grid = new DataGrid(); 

    grid.Dock = DockStyle.Fill; 
    grid.DataSource = dataForTheCurrentLoop; 

    tabPage.Controls.Add(grid); 
    tabControl.Controls.Add(tabPage); 
} 

this.Controls.Add(tabControl); 
0

Sembra che il percorso migliore per te sia la creazione di una classe di controllo di tabulazione personalizzata. Potrebbe ereditare dal controllo struttura a schede per la maggior parte delle sue funzionalità e proprietà per il datagrid e qualsiasi altra cosa di cui hai bisogno. Quindi quando ottieni i tuoi clienti, puoi creare una scheda per ogni lettera che ti serve e configurare le proprietà corrispondenti.

2

Aggiungere il codice per generare le schede in cui è possibile determinare quali lettere devono essere visualizzate, probabilmente quando si recuperano i dati o nel metodo OnLoad() del modulo. Dovresti essere in grado di aggiungere/rimuovere in modo dinamico le schede dal controllo struttura a schede integrato. Puoi controllare il codice del designer per avere un'idea di come farlo, o dei documenti.

Si noti che non è necessariamente una buona idea aggiungere una scheda separata per ogni carattere. 26 schede (che si verificano quando il tuo database diventa abbastanza grande) è un numero piuttosto scadente di schede da far passare a qualcuno - non necessariamente renderà le cose più velocemente.

Invece, prendere in considerazione la possibilità di fornire un meccanismo di filtraggio dinamico, simile alla casella di ricerca nel menu di avvio di Vista. Il tuo utente può digitare un singolo carattere (supponendo che tu non stia scrivendo una sorta di chiosco o un software con solo schermo tattile) e zumare immediatamente sui nomi rilevanti. Ciò funzionerebbe idealmente con un ListView nella modalità Elenco o Dettagli.

1

Non ricordo le specifiche ora. Ma guarda il codice nel file XXX.designer.cs per un modulo che contiene un controllo struttura a schede. Lì vedrai il codice generato per aggiungere una nuova scheda. Basta replicare quelle linee, è possibile aggiungere una nuova scheda ogni volta che vuoi.

Problemi correlati