C# Datagridview生成额外的列
我以编程方式添加datagridview列。但是,它会生成超过指定列数的额外列。我有15列,它总共生成16列。 我试图将自动生成设置为false,但没有帮助C# Datagridview生成额外的列,c#,winforms,C#,Winforms,我以编程方式添加datagridview列。但是,它会生成超过指定列数的额外列。我有15列,它总共生成16列。 我试图将自动生成设置为false,但没有帮助 public Admin() { InitializeComponent(); this.dgv.AutoGenerateColumns = false; } private void Admin_Load(object sender, EventArgs e) { dgv.ColumnCount = 15;
public Admin()
{
InitializeComponent();
this.dgv.AutoGenerateColumns = false;
}
private void Admin_Load(object sender, EventArgs e)
{
dgv.ColumnCount = 15;
DataGridViewCheckBoxColumn checkColumn = new DataGridViewCheckBoxColumn();
checkColumn.Name = "Check";
checkColumn.DataPropertyName = "Check";
checkColumn.HeaderText = "Select";
checkColumn.Width = 50;
checkColumn.DisplayIndex = 0;
checkColumn.ReadOnly = false;
checkColumn.FillWeight = 10;
dgv.Columns.Add(checkColumn);
dgv.Columns[1].Name = "Class";
dgv.Columns[1].DataPropertyName = "Class";
dgv.Columns[2].Name = "Recipient Name";
dgv.Columns[2].DataPropertyName = "Recipient Name";
dgv.Columns[3].Name = "Dest. Address 1";
dgv.Columns[3].DataPropertyName = "Dest. Address 1";
dgv.Columns[4].Name = "Dest. Address 2";
dgv.Columns[4].DataPropertyName = "Dest. Address 2";
dgv.Columns[5].Name = "City";
dgv.Columns[5].DataPropertyName = "City";
dgv .Columns[6].Name = "State";
dgv.Columns[6].DataPropertyName = "State";
dgv.Columns[7].Name = "Postal Code";
dgv.Columns[7].DataPropertyName = "Postal Code";
dgv.Columns[8].Name = "Country";
dgv.Columns[8].DataPropertyName = "Country";
dgv.Columns[9].Name = "Description";
dgv.Columns[9].DataPropertyName = "Description";
dgv.Columns[10].Name = "Weight (lb)";
dgv.Columns[10].DataPropertyName = "Weight (lb)";
dgv.Columns[11].Name = "Value (USD)";
dgv.Columns[11].DataPropertyName = "Value (USD)";
dgv.Columns[12].Name = "Date/time";
dgv.Columns[12].DataPropertyName = "Date/time";
dgv.Columns[13].Name = "MID";
dgv.Columns[13].DataPropertyName = "MID";
//dgv.Columns[12].Visible = false;
dgv.Columns[14].Name = "CheckedBy";
dgv.Columns[14].DataPropertyName = "CheckedBy";
}
您的代码设置了15列,但随后添加了另一列。添加为第16列的是
DataGridViewCheckBoxColumn
,但移动到了显示中的第一个位置(DisplayIndex=0
)
然后开始初始化列,但由于网络中的每个数组都从索引0开始,而不是从索引1开始,因此跳过了初始化索引0处的列(但现在移动到DisplayIndex=1)。这将导致在复选框列之后显示一个空列
您可以只添加14列,并更改索引,从0开始到13结束
dgv.ColumnCount = 14;
DataGridViewCheckBoxColumn checkColumn = new DataGridViewCheckBoxColumn();
... after this add you have 15 columns
dgv.Columns.Add(checkColumn);
...... start indexing at index 0
dgv.Columns[0].Name = "Class";
dgv.Columns[0].DataPropertyName = "Class";
.... decrease the indexing of the other columns by 1
dgv.Columns[13].Name = "CheckedBy";
dgv.Columns[13].DataPropertyName = "CheckedBy";