Как настроить ширину столбцов, созданных с помощью "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 ответа
Вы должны установить их ширину в 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);
}