我试图显示一个链接到datatable的简单datagridview,我希望datatable中的第一列最终成为datagridview的行标题单元格。在这一点上,我将满足于在行标题单元格中有任何值。我可以在datagridview中显示所有行和列,也可以显示列标题单元格,但不能显示行标题单元格。我检查了row.headercell.value中的值,我放在那里的数据就在那里。我检查了row.headercell.displayed,它是假的,但这是只读的,所以我不能使它成为真的。如何显示行标题单元格?
下面是一个简单的例子,我试图让它发挥作用:
DataTable table = new DataTable();
for (int i = 0; i<10; i++)
{
table.Columns.Add(new DataColumn("column-" + i));
}
for (int i = 0; i < 10; i++)
{
DataRow theRow = table.NewRow();
for (int j = 0; j < 10; j++)
theRow[j] = i + "-" + j;
table.Rows.Add(theRow);
}
dataGridView1.DataSource = table;
dataGridView1.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders;
int rowNumber = 1;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.IsNewRow) continue;
row.HeaderCell.Value = "Row " + rowNumber;
rowNumber = rowNumber + 1;
}
dataGridView1.AutoResizeRowHeadersWidth(
DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders);
最佳答案
如果将此代码放在构造函数中,它将不起作用。将代码移到表单的Load
事件中,它应该可以正常工作。windows.forms和c的一个常见问题是在构造函数中使用了不正确的初始化。许多控件直到构造函数完成后才完全创建。(我忘记了原因,但我相信这是因为句柄尚未创建。)如果按照Microsoft的建议在Load
事件中进行初始化,则可以避免许多“变通方法”。