查詢後數據綁定到 `DataGridView`,想手動定義列寬,但 `dgvEmployee.Columns[0].Width = 40` 報錯 (列不存在)。
`AutoGenerateColumns = true` (默認) 時,綁定數據源後自動生成列,**但在綁定前訪問 `Columns[index]` 為空**;綁定後雖有列,但索引順序不確定。
dgvEmployee.AutoGenerateColumns = false;
// 手動添加列 (對應數據源屬性名 DataPropertyName)
dgvEmployee.Columns.Add(new DataGridViewTextBoxColumn {
Name = "colId", HeaderText = "編號", DataPropertyName = "Id", Width = 40
});
dgvEmployee.Columns.Add(new DataGridViewTextBoxColumn {
Name = "colName", HeaderText = "姓名", DataPropertyName = "Name", Width = 80
});
// ... 其他列
// 綁定數據源
dgvEmployee.DataSource = dataTable; // 或 List
dgvEmployee.DataSource = dataTable;
dgvEmployee.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); // 自適應內容
// 或指定列名調整
if (dgvEmployee.Columns["Id"] != null) dgvEmployee.Columns["Id"].Width = 40;
if (dgvEmployee.Columns["Name"] != null) dgvEmployee.Columns["Name"].Width = 80;