C#.net 4.6 DataGridView作为自定义组件的属性

C#.net 4.6 DataGridView作为自定义组件的属性,c#,datagridview,combobox,.net-4.6,form-designer,C#,Datagridview,Combobox,.net 4.6,Form Designer,我目前正在开发一个多列组合框,其中包含一个DataGridView作为DropDownControl。我已经找到并使用它作为父类 下面是代码的重要部分 namespace GUILib { partial class MultiColumnDropDown { ... [ Browsable(true), DesignerSerializationVisibility(DesignerSerial

我目前正在开发一个多列组合框,其中包含一个DataGridView作为DropDownControl。我已经找到并使用它作为父类

下面是代码的重要部分

namespace GUILib { partial class MultiColumnDropDown { ... [ Browsable(true), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), TypeConverterAttribute(typeof(System.ComponentModel.ExpandableObjectConverter)) ] public System.Windows.Forms.DataGridView datagrid { get { return dataGridView1; } set { dataGridView1 = value; } } ... #region Vom Komponenten-Designer generierter Code /// /// Erforderliche Methode für die Designerunterstützung. /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. /// private void InitializeComponent() { this.dataGridView1 = new System.Windows.Forms.DataGridView(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); this.SuspendLayout(); // // dataGridView1 // this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dataGridView1.Location = new System.Drawing.Point(0, 0); this.dataGridView1.Name = "dataGridView1"; this.dataGridView1.Size = new System.Drawing.Size(240, 150); this.dataGridView1.TabIndex = 0; ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); this.ResumeLayout(false); } #endregion private System.Windows.Forms.DataGridView dataGridView1; } } 名称空间GUILib { 部分类多列下拉列表 { ... [ 可浏览(真), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), TypeConverterAttribute(typeof(System.ComponentModel.ExpandableObjectConverter)) ] public System.Windows.Forms.DataGridView datagrid { 得到 { 返回dataGridView1; } 设置 { dataGridView1=值; } } ... #区域Vom Komponenten设计师通用代码 /// ///模具设计人员的经验方法。 ///这是一个非常复杂的数字高程模型代码编辑器geändert werden。 /// 私有void InitializeComponent() { this.dataGridView1=new System.Windows.Forms.DataGridView(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); 这个.SuspendLayout(); // //dataGridView1 // this.dataGridView1.columnHeadershightSizeMode=System.Windows.Forms.datagridviewColumnHeadershightSizeMode.AutoSize; this.dataGridView1.Location=新系统.Drawing.Point(0,0); this.dataGridView1.Name=“dataGridView1”; this.dataGridView1.Size=新系统.Drawing.Size(240150); this.dataGridView1.TabIndex=0; ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); 此选项为.resume布局(false); } #端区 private System.Windows.Forms.DataGridView dataGridView1; } } 我的问题是,当我将这个自定义控件添加到表单中时,我可以更改datagrid的每个属性(列除外)。当我试图通过单击带有三个点的按钮来修改列时,我将得到一个错误:

翻译为“对象引用未设置为对象的实例”。如果我在代码中添加列(multiclumndropdown1.datagrid.Columns.add),这些列将在运行时添加

有人能告诉我哪里出错了吗

你好,迈克尔


另外,很抱歉我的英语不好,我希望有人能理解我的意思并能帮助我。

您是否已在InitializeComponent()中初始化multiColumnDropDown1.datagrid.Columns?它应该被创建并且不为null。我已经检查了是否可以初始化它,但它是DataGridView的只读属性,我希望它能够由DataGridView的构造函数初始化。您是否在InitializeComponent()中初始化了multiColumnDropDown1.datagrid.Columns?它应该被创建,不能为null。我已经检查了是否可以初始化它,但它是DataGridView的只读属性,我希望它能被DataGridView的构造函数初始化。