Winforms TabControl中动态创建tabPages的问题

时间:2010-03-25 09:28:57

标签: c# winforms datagridview tabcontrol

我想在TabControl中创建动态tabPages。在每个tabPage中我创建了dataGridView,我想用这个dataGrid填充每个tabPage的整个空间。这是代码,我这样做:

private void tabControlMutants_SelectedIndexChanged(object sender, EventArgs e)
{
    DataGridView dgw = new DataGridView(); 

    DataGridViewTextBoxColumn testCaseCol = new System.Windows.Forms.DataGridViewTextBoxColumn();
    DataGridViewTextBoxColumn resultCol = new System.Windoows.Forms.DataGridViewTextBoxColumn();
    // 
    // dataGridView1
    // 
    dgw.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
    dgw.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
    testCaseCol,
    resultCol});
    dgw.Location = new System.Drawing.Point(3, 3);
    dgw.Name = "dataGridView1";
    dgw.AutoSize = true;
    dgw.Dock = System.Windows.Forms.DockStyle.Fill;
    dgw.TabIndex = 0;
    // 
    // TestCaseColumn
    // 
    testCaseCol.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
    testCaseCol.HeaderText = "Test Case";
    testCaseCol.Name = "TestCaseColumn";
    // 
    // ResultColumn
    // 
    resultCol.HeaderText = "Result";
    resultCol.Name = "ResultColumn";

    tabControlMutants.TabPages[(sender as TabControl).SelectedIndex].Controls.Add(dgw);
    ((System.ComponentModel.ISupportInitialize)(dgw)).EndInit();

    //fill dataGridView

}

但它不起作用,因为当我调整主窗口大小时,数据gridView不会改变它的大小(尽管dock属性设置为fill)。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

删除dgw.AutoSize = true;

答案 1 :(得分:1)

dgw.Dock = System.Windows.Forms.DockStyle.Fill;语句移至以下 tabControlMutants.TabPages[...].Controls.Add(dgw);行。也许在EndInit()之下,我不确定。

并删除dgw.Location = ...行,因为它不需要。

编辑:

我刚刚进行了一些测试,这基本上应该可行。这意味着错误在其他地方,在未显示的代码中。也许在'填充行部分' 我建议您开始删除部分代码以消除错误。

您确实意识到每次选择一个标签时都会创建一个Dgv ,对吗?我假设这是演示代码。

答案 2 :(得分:1)

首先尝试添加控件,然后设置Dock属性