仅在 AutoSizeColumns 和 AutoSizeRows 之后为 DataGridView 的第一列定义自定义宽度

Define custom width only to the 1st column of DataGridView after AutoSizeColumns and AutoSizeRows

我的 WinForms 项目中有一个 DataGridView 工作正常。

我给它设置了这些属性

而且它可以很好地调整列和行的大小。我想问一下,如何让我的第一列比其他列更大?

这就是我想要做的

myDataGridView.Columns[1].Width = 400;

但是当事件 autosize 引发时我没有,所以我把这段代码放在它后面。

编辑:

这是我的 DataGridView 的样子。

如您所见,我的所有列的大小都相同,这是因为 属性 AutoSizeColumnsMode FillAutoSizeRowsMo​​de AllCells ,我只想让第一列比其他列大。

当我尝试做的时候:

myDataGridView.DataSource = myDataTable;

myDataGridView.Columns[1].Width = 400;

我收到以下错误:

System.NullReferenceException: 'Reference to an object not set on an object instance.'

您只需在 Form_LoadForm constructor.

中的 InitializeComponent(); 之后添加 myDataGridView.Columns[0].Width = 400;

就像,

private void Form1_Load(object sender, EventArgs e)
{
    // Create a new DataTable.
    DataTable table = new DataTable("TestTable");
    DataColumn column;
    DataRow row;

    column = new DataColumn();
    column.DataType = System.Type.GetType("System.Int32");
    column.ColumnName = "id";
    table.Columns.Add(column);

    column = new DataColumn();
    column.DataType = System.Type.GetType("System.String");
    column.ColumnName = "name";
    table.Columns.Add(column);

    for (int i = 0; i <= 2; i++)
    {
        row = table.NewRow();
        row["id"] = i;
        row["name"] = "name " + i;
        table.Rows.Add(row);
    }

    dataGridView1.DataSource = table;

    dataGridView1.Columns[0].Width = 400;
}

或者,

public Form1()
{
    InitializeComponent();
    dataGridView1.Columns[0].Width = 400;
}