我试图显示一个链接到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事件中进行初始化,则可以避免许多“变通方法”。

09-28 00:55