Проблема с динамическим созданием tabPages в Winforms TabControl - PullRequest
4 голосов
/ 25 марта 2010

Я хочу создать динамические вкладки в TabControl. В каждой вкладке я создаю dataGridView и хочу заполнить все пространство каждой вкладки этой dataGrid. Вот код, где я делаю это:

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

}

Но это не работает, потому что когда я изменяю размер главного окна, data gridView не меняет свой размер (хотя свойство dock установлено для заполнения). Есть идеи?

Ответы [ 3 ]

1 голос
/ 25 марта 2010

Переместите оператор dgw.Dock = System.Windows.Forms.DockStyle.Fill; на ниже строки tabControlMutants.TabPages[...].Controls.Add(dgw);.И, возможно, ниже EndInit (), я не уверен.

И удалите строку dgw.Location = ..., потому что она не нужна.

Редактировать:

Я только что провел небольшой тест, и это в основном должно работать.Это означает, что ошибка в другом месте, в коде не показано.Возможно, в «Части заполнения строк».
Я рекомендую начать удаление частей кода, чтобы устранить ошибку.

И вы понимаете, что создаете Dgv каждый раз, когда вкладка выбрана, не так ли?Я предполагаю, что это демонстрационный код.

1 голос
/ 25 марта 2010

Попробуйте сначала добавить элемент управления, затем установите свойство Dock

1 голос
/ 25 марта 2010

Удалить dgw.AutoSize = true;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...