2012-07-23 6 views
2

J'ai un TabControl. Je veux dynamiquement ajouter des TabPages qui auraient dynamiquement ajouté DataGridView. Je suis capable d'ajouter dynamiquement les tabPages, mais quand j'ajoute DataGridView à l'onglet dynamique, rien ne s'affiche. Appréciez toute aide qui peut être fournie.Comment ajouter dynamiquement DataGridView à TabPage

Voici le code.

    myTabPage.SuspendLayout(); 
        tabControlNonQueued.TabPages.Add(myTabPage); 
        loadDataGridToTab(dataTable, myTabPage); 
    private void loadDataGridToTab(DataTable dt, TabPage tab) 
    { 
     DataGridView grid = new DataGridView(); 
     tab.Controls.Add(grid); 
     tab.Refresh(); 
     grid.Visible = true; 
     System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle = new System.Windows.Forms.DataGridViewCellStyle(); 
     grid.AllowUserToAddRows = false; 
     grid.AllowUserToDeleteRows = false; 
     grid.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; 
     grid.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle; 
     grid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; 
     dataGridViewCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; 
     dataGridViewCellStyle.BackColor = System.Drawing.SystemColors.Control; 
     dataGridViewCellStyle.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 
     dataGridViewCellStyle.ForeColor = System.Drawing.SystemColors.WindowText; 
     dataGridViewCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight; 
     dataGridViewCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText; 
     dataGridViewCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.True; 
     grid.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle; 
     grid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; 
     //grid.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { 
     //this.cbDG}); 


     hideDGColumn(grid, "Counter"); 
     SetFontAndColors(grid); 
     lockDataGrid(grid); 
     BindingSource source = new BindingSource(); 
     source.DataSource = dt; 
     grid.Dock = DockStyle.Fill; 
     grid.DataSource = source; 

    } 

Merci

+0

S'il vous plaît, ne comprennent pas d'informations sur une langue utilisée dans un titre de la question, à moins qu'il ne serait pas logique sans elle. Les balises servent à cette fin. –

+0

http://stackoverflow.com/questions/1084098/creating-a-tab-control-with-a-dynamic-number-of-tabs-in-visual-studio-c-sharp - Cela pourrait aider. –

Répondre

1

Avez-vous essayé de déplacer la déclaration tab.Controls.Add (grille) pour après la grille est configurée?

Séparément, je remarque que vous utilisez "SuspendLayout()" pour autoriser des mises à jour sans scintillement. Vous rappelez-vous de réactiver la mise en page?

Par exemple, ceci:

myTabPage.SuspendLayout(); 
tabControlNonQueued.TabPages.Add(myTabPage); 
DataGridView grid = new DataGridView(); 

// ... grid configuration and setup here ... 

tab.Controls.Add(grid); 
myTabPage.ResumeLayout(); 
tab.Refresh(); 
+0

J'ai fait tous les changements que vous avez suggérés. J'ai ajouté ResumeLayout et également actualisé et déplacé le DataGridView en ajoutant à la fin. Cela n'a pas aidé. La propriété dataGridView n'apparaît pas dans les tabPages ajoutés dynamiquement. Merci – djoshi

+0

Juste pour vérifier, j'ai ajouté un contrôle checkBox et qui est ajouté et apparaît correct. vide privé loadDataGridToTab (DataTable dt, onglet TabPage, chaîne tabName) { DataGridView grid = new DataGridView(); \t System.Windows.Forms.CheckBox cbSelectAll = new System.Windows.Forms.CheckBox(); tab.Controls.Add (cbSelectAll); tab.Controls.Add (grille); – djoshi

+0

Est-il possible que vous ajoutiez DataGridView au mauvais parent? Par exemple, un contrôle onglet se compose d'un certain nombre de choses: (1) le contrôle onglet lui-même, (2) les pages, (3) les éléments enfants dans les pages. Je remarque que ce code utilise simplement la variable "tab" - est-ce possible que ce n'est pas l'élément correct? –

Questions connexes