C# Datagridview生成额外的列

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;

我以编程方式添加datagridview列。但是,它会生成超过指定列数的额外列。我有15列,它总共生成16列。 我试图将自动生成设置为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列,但随后添加了另一列。添加为第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";