仅在 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 Fill 和 AutoSizeRowsMode AllCells ,我只想让第一列比其他列大。
当我尝试做的时候:
myDataGridView.DataSource = myDataTable;
myDataGridView.Columns[1].Width = 400;
我收到以下错误:
System.NullReferenceException: 'Reference to an object not set on an object instance.'
您只需在 Form_Load
或 Form 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;
}
我的 WinForms 项目中有一个 DataGridView 工作正常。
我给它设置了这些属性
而且它可以很好地调整列和行的大小。我想问一下,如何让我的第一列比其他列更大?
这就是我想要做的
myDataGridView.Columns[1].Width = 400;
但是当事件 autosize
引发时我没有,所以我把这段代码放在它后面。
编辑:
这是我的 DataGridView 的样子。
如您所见,我的所有列的大小都相同,这是因为 属性 AutoSizeColumnsMode Fill 和 AutoSizeRowsMode AllCells ,我只想让第一列比其他列大。
当我尝试做的时候:
myDataGridView.DataSource = myDataTable;
myDataGridView.Columns[1].Width = 400;
我收到以下错误:
System.NullReferenceException: 'Reference to an object not set on an object instance.'
您只需在 Form_Load
或 Form 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;
}