C# 如何停止设计器生成DataGridViewColumn

C# 如何停止设计器生成DataGridViewColumn,c#,winforms,visual-studio-2012,C#,Winforms,Visual Studio 2012,我正在开发具有固定列和行的MyDataGridView控件 public partial class MyDataGridView { public MyDataGridView() { CreateColumns(); CreateRows(); } } 当我在设计时将MyDataGridView添加到表单中时,设计器会自动生成更多的列—与上面的构造函数中使用CreateColumns()创建的列完全相同。我能阻止设计师这样做

我正在开发具有固定列和行的MyDataGridView控件

public partial class MyDataGridView
{
     public MyDataGridView()
     {
         CreateColumns();
         CreateRows();
     }
}
当我在设计时将MyDataGridView添加到表单中时,设计器会自动生成更多的列—与上面的构造函数中使用CreateColumns()创建的列完全相同。我能阻止设计师这样做吗

private void CreateColumns(); // Creates columns of MyDataGridView.
请将此代码添加到WindowsFormsApplication项目,从Form1上的工具箱中编译并拖动MyDataGridView控件,然后运行该应用程序。查看设计器的行为和生成代码的方式(Form1.Designer.cs)

命名空间窗口窗体应用程序1
{
公共类MyDataGridView:System.Windows.Forms.DataGridView
{
公共MyDataGridView()
{
CreateColumns();
CreateRows();
}
私有void CreateColumns()
{
对于(整数天=0;天<7;天++)
{
this.Columns.Add(新的DataGridViewTextBoxColumn());
}
}
私有void CreateRows()
{
对于(int n=0;n<6;n++)
{
this.Rows.Add(新DataGridViewRow());
}
}
}
}
尝试以下方法:-

第一组
AutoGenerateColumns=“False”
和 如果列的ColumnName等于可以排除的值,则取消该列的生成,如

 private void MyDataGrid_AutoGenerateColumn(
object sender, DataGridAutoGeneratingColumnEventArgs e)
    {
        if ((string)e.Column.Header == "fieldname")
        {
            e.Cancel = true;
        }
    }

如果你发布了更多的代码,回答就会更容易。问题可能出在你的eventhandler中,请检查你的表单加载eventhandler。要继续@PaulKertscher的输入:总是有更多的代码要显示;)
 private void MyDataGrid_AutoGenerateColumn(
object sender, DataGridAutoGeneratingColumnEventArgs e)
    {
        if ((string)e.Column.Header == "fieldname")
        {
            e.Cancel = true;
        }
    }