自定义DataGridView每次构建时都会添加列

时间:2014-01-30 02:23:30

标签: c# winforms datagridview visual-studio-2013

我正在编写一个继承的DataGridView控件,默认情况下会有两列。 DGV位于用户控件GeneralTabPanel上,该控件继承自MainTabPanel继承的UserControl。原因是MainTabPanel包含每个继承面板必须覆盖的虚函数。

问题是每当我查看Designer中的GeneralTabPanel并点击Build时, Visual Studio Express 2013 将在Designer中生成两列并将它们添加到DGV。< / p>

SuperDataGridView

using System.Windows.Forms;

namespace AnyGameEngineEditor {

    public class SuperDataGridView : DataGridView {

        public SuperDataGridView () {
            this.ColumnCount = 2;
        }
    }
}

GeneralTabPanel

namespace AnyGameEngineEditor {
    public partial class GeneralTabPanel : MainTabPanel {

        public GeneralTabPanel () {
            InitializeComponent ();
        }

    }
}

MainTabPanel

using System.Windows.Forms;

namespace AnyGameEngineEditor {
    public partial class MainTabPanel : UserControl {
        public MainTabPanel () {
            InitializeComponent ();
            this.Dock = DockStyle.Fill;
        }

    }
}

这是准分子,因为我可以使用VS2013 Express在我的机器上重现问题。这是如何重现(我还没有在另一台机器上测试过这个):

  1. 制作一个新的Windows窗体项目。
  2. 将这三个文件复制到根文件夹中。
  3. 在设计师中打开GeneralTabPanel
  4. 打开GeneralTabPanel
  5. 的Designer .cs文件
  6. 构建项目。
  7. .cs文件底部应该有两个新的DataGridViewTextBoxCell变量。
  8. 保存项目并重建,另外两个变量现在应该在底部。
  9. 重复5-7,直到你确信一些有趣的事情发生。
  10. 我发现如果我在Dock中注释掉MainTabPanel行,则不会发生这种情况。

    所以最终我的问题是为什么世界上会发生这种情况?

2 个答案:

答案 0 :(得分:0)

AutoGenerateColumns设为false。

答案 1 :(得分:0)

每次打开表单时如何清除datagridview? Form1.DataGridView1.Columns.Clear()