当前位置:  开发笔记 > 编程语言 > 正文

如何防止Visual Studio设计器在DataGridView中自动生成列?

如何解决《如何防止VisualStudio设计器在DataGridView中自动生成列?》经验,为你挑选了2个好方法。

我以DataGridView编程方式生成子类中的所有列.但是,Visual Studio 2008会继续读取我的构造函数类(DataTable使用空内容填充并将其绑定到该类DataGridView)并为InitializeComponent方法中的列生成代码- 在进程设置AutoGenerateColumnsfalse.

这会导致设计时编译中的错误,这些错误只能通过手动进入设计代码并删除对这些自动生成列的所有引用来解决.

我怎么能阻止这样做呢?

我试过了:

使控件'冻结'

设置DataGridView实例化对象protected(在之前的帖子中建议引用此站点)

Marc Gravell.. 5

听起来好像是在构造函数中添加控件.也许稍后会添加列 - 也许就像覆盖一样OnParentChanged; 然后,您将能够检查,DesignMode因此您只在执行期间添加列(而不是在设计期间).



1> Marc Gravell..:

听起来好像是在构造函数中添加控件.也许稍后会添加列 - 也许就像覆盖一样OnParentChanged; 然后,您将能够检查,DesignMode因此您只在执行期间添加列(而不是在设计期间).



2> JaredPar..:

我之前在使用Items属性的ComboBox中看到过这种行为,这真的令人沮丧.以下是我用ComboBox解决这个问题的方法.您应该能够将其应用于DataGridView.

我创建了一个名为Items的"新"属性,并将其设置为不可浏览,并明确地从序列化中隐藏.它只是访问真实的Items属性.

[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new ObjectCollection Items
{
    get { return ((ComboBox)this).Items; }
}

[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new object DataSource
{
    get { return ((ComboBox)this).DataSource; }

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有