Datagridview生成额外的列
本文关键字:Datagridview | 更新日期: 2023-09-27 18:13:56
我正在以编程方式添加datagridview列。但是,它会生成比指定列数多的列。我有15列,它总共生成16列。我尝试将autogenerate设置为false,但没有帮助
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列,但随后添加了另一列。DataGridViewCheckBoxColumn
被添加为第16列,但被移动到显示中的第一个位置(DisplayIndex = 0
)。
然后开始初始化列,但是,由于NET中的每个数组都从索引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";