Как настроить ширину столбцов, созданных с помощью "xy.Columns.Add"?

Моя форма имеет фиксированный размер 1024x600 (dataGridView имеет ширину 1022). Когда я пытаюсь прочитать XML с этим кодом, каждый столбец имеет одинаковую ширину, а столбцы 10, 11, 12 и 13 даже не отображаются, потому что они находятся снаружи.

private void btLoadXML_Click(object sender, EventArgs e)
    {
    DataTable dt = new DataTable("itemstable");

    dt.Columns.Add("Datum", typeof(System.String));
    dt.Columns.Add("1", typeof(System.String));
    dt.Columns.Add("2", typeof(System.String));
    dt.Columns.Add("3", typeof(System.String));
    dt.Columns.Add("4", typeof(System.String));
    dt.Columns.Add("5", typeof(System.String));
    dt.Columns.Add("6", typeof(System.String));
    dt.Columns.Add("7", typeof(System.String));
    dt.Columns.Add("8", typeof(System.String));
    dt.Columns.Add("9", typeof(System.String));
    dt.Columns.Add("10", typeof(System.String));
    dt.Columns.Add("11", typeof(System.String));
    dt.Columns.Add("12", typeof(System.String));
    dt.Columns.Add("13", typeof(System.String));

    //Read XML File And Display Data in GridView
    dt.ReadXml("items2.xml");
    dataGridView1.DataSource = dt;
    }

Как я могу настроить ширину каждого столбца вручную, чтобы все поместилось?

3 ответа

Попробуй это:

dataGridView1.Columns[0].Width = 200;

Вы должны установить их ширину в dataGridview следующим образом:

dataGridView1.Columns[index].Width = /*insert number here*/;

Как правило, мне нравится разделять dataTable и dataGridView, используя первый больше для манипулирования данными, а второй для рендеринга таблиц.

Использование Grid.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);

Для автоматически созданных сеток единственным способом, которым я мог заставить столбцы начинать правильную ширину, не реагируя на событие в элементе управления-владельцем, было:

public static void InitGrid(DataGridView Grid) {
    Grid.HandleCreated+=new System.EventHandler(DoResizeColumnsEvent);
}

static void DoResizeColumnsEvent(object sender,EventArgs e) {
            ((DataGridView)sender).AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);         
}
Другие вопросы по тегам