【问题标题】:Problem with dynamic create tabPages in Winforms TabControlWinforms TabControl中动态创建tabPages的问题
【发布时间】:2010-03-25 09:28:56
【问题描述】:

我想在 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 不会改变它的大小(尽管停靠属性设置为填充)。有什么想法吗?

【问题讨论】:

    标签: c# winforms datagridview tabcontrol


    【解决方案1】:

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

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

    编辑:

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

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

    【讨论】:

    • 是的,你是对的,错误在其他地方,即在主表单构造函数中我调用了 SuspendLayout 方法(我不知道为什么),这会暂停这个表单的布局逻辑。当我删除此方法时,一切都开始起作用了。感谢您的帮助:)
    【解决方案2】:

    删除dgw.AutoSize = true;

    【讨论】:

      【解决方案3】:

      尝试先添加控件,再设置Dock属性

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-15
        • 2011-03-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多