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

Winforms 仅为AutoSizeColumns和AutoSizeRows之后的DataGridView的第1列定义自定义宽度,winforms,datagridview,resize,Winforms,Datagridview,Resize,在我的WinForms项目中,有一个DataGridView运行良好 我将这些属性设置为它 而且它可以很好地调整列和行的大小。我想问,如何使我的第一个专栏比其他专栏更大 这就是我想做的 myDataGridView.Columns[1].Width = 400; 但是当事件autosize引发时,我不会这样做,所以我将此代码放在它后面 编辑: 这就是我的DataGridView的样子 正如您所看到的,由于属性“AutoSizeColumnsMode Fill”和“AutoSizeRowsM

在我的WinForms项目中,有一个DataGridView运行良好

我将这些属性设置为它

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

这就是我想做的

myDataGridView.Columns[1].Width = 400;
但是当事件
autosize
引发时,我不会这样做,所以我将此代码放在它后面

编辑:

这就是我的DataGridView的样子

正如您所看到的,由于属性“AutoSizeColumnsMode Fill”和“AutoSizeRowsMode AllCells”的缘故,我的所有列的大小都相同,我只想使第一列比其他列大

当我尝试这样做时:

myDataGridView.DataSource = myDataTable;

myDataGridView.Columns[1].Width = 400;
我得到了以下错误:

System.NullReferenceException:“对未在对象实例上设置的对象的引用。”


只需添加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;
}

第一列应该是索引
0
,而不是
1
。你能详细解释最后一句话吗?我会在另一张图片上更新问题,这样可能会更清楚。抱歉,我的英语不好。我遇到以下错误:
System.NullReferenceException:“对对象实例上未设置的对象的引用”
dataGridView1.Columns[0]。宽度=400此one@ChangeWorld你能提供更多关于myDataTable的信息吗?我用数据表更新了我的答案。你可以检查它是否有效。
public Form1()
{
    InitializeComponent();
    dataGridView1.Columns[0].Width = 400;
}