我正在编写一个继承的DataGridView
控件,默认情况下它将具有两列。 DGV驻留在用户控件GeneralTabPanel
上,该控件从MainTabPanel
继承,而UserControl
从MainTabPanel
继承。原因是GeneralTabPanel
包含每个继承面板都必须重写的虚函数。
问题是,每当我在Designer中查看GeneralTabPanel
并单击Build时,Visual Studio Express 2013都会在Designer中生成两列并将其添加到DGV。
SuperDataGridView
using System.Windows.Forms;
namespace AnyGameEngineEditor {
public class SuperDataGridView : DataGridView {
public SuperDataGridView () {
this.ColumnCount = 2;
}
}
}
常规选项卡面板
namespace AnyGameEngineEditor {
public partial class GeneralTabPanel : MainTabPanel {
public GeneralTabPanel () {
InitializeComponent ();
}
}
}
主选项卡面板
using System.Windows.Forms;
namespace AnyGameEngineEditor {
public partial class MainTabPanel : UserControl {
public MainTabPanel () {
InitializeComponent ();
this.Dock = DockStyle.Fill;
}
}
}
这是我可以使用VS2013 Express在机器上重现该问题的准系统。这是如何重现的方法(我尚未在另一台计算机上进行过实际测试):
新建一个Windows Forms项目。
将这三个文件复制到根文件夹中。
在设计器中打开
GeneralTabPanel
。打开
DataGridViewTextBoxCell
的Designer .cs文件。生成项目。
.cs文件底部应有两个新的
Dock
变量。保存项目并重建,现在应该在底部再添加两个变量。
重复5-7,直到您确信发生了有趣的事情。
我发现,如果我注释掉
MainTabPanel
中的行,则不会发生这种情况。因此,最终我的问题是,为什么在世界上会发生这种情况?
最佳答案
将AutoGenerateColumns
设置为false。