【问题标题】:How to stop Designer from generating DataGridViewColumn如何阻止设计器生成 DataGridViewColumn
【发布时间】:2017-01-19 10:07:44
【问题描述】:

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

public partial class MyDataGridView
{
     public MyDataGridView()
     {
         CreateColumns();
         CreateRows();
     }
}

当我在设计时将 MyDataGridView 添加到窗体时,设计器会自动生成更多列 - 与上面构造函数中使用 CreateColumns() 创建的列完全相同。我可以阻止设计师这样做吗?

private void CreateColumns(); // Creates columns of MyDataGridView.

请将此代码添加到 WindowsFormsApplication 项目,编译 MyDataGridView 控件并将其从 ToolBox 拖到 Form1 上,然后运行该应用程序。查看 Designer 的行为方式和代码生成方式 (Form1.Designer.cs)。

namespace WindowsFormsApplication1
{
    public class MyDataGridView : System.Windows.Forms.DataGridView
    {
        public MyDataGridView()
        {
            CreateColumns();
            CreateRows();
        }

        private void CreateColumns()
        {
            for (int day = 0; day < 7; day++)
            {
                this.Columns.Add(new DataGridViewTextBoxColumn());
            }
        }

        private void CreateRows()
        {
            for (int n = 0; n < 6; n++)
            {
                this.Rows.Add(new DataGridViewRow());
            }
        }
    }
}

【问题讨论】:

  • 如果您发布更多代码,回答会更容易。
  • 问题可能出在你的事件处理程序上,检查你的表单加载事件处理程序。
  • 继续@PaulKertscher 的输入:总是有更多的代码要显示;)

标签: c# winforms visual-studio-2012


【解决方案1】:

试试这个方法:-

第一组AutoGenerateColumns="False" 和 如果它的 ColumnName 等于您可以排除的值,则取消列的生成,例如

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多