我以DataGridView
编程方式生成子类中的所有列.但是,Visual Studio 2008会继续读取我的构造函数类(DataTable
使用空内容填充并将其绑定到该类DataGridView
)并为InitializeComponent
方法中的列生成代码- 在进程设置AutoGenerateColumns
中false
.
这会导致设计时编译中的错误,这些错误只能通过手动进入设计代码并删除对这些自动生成列的所有引用来解决.
我怎么能阻止这样做呢?
我试过了:
使控件'冻结'
设置DataGridView
实例化对象protected
(在之前的帖子中建议引用此站点)
Marc Gravell.. 5
听起来好像是在构造函数中添加控件.也许稍后会添加列 - 也许就像覆盖一样OnParentChanged
; 然后,您将能够检查,DesignMode
因此您只在执行期间添加列(而不是在设计期间).
听起来好像是在构造函数中添加控件.也许稍后会添加列 - 也许就像覆盖一样OnParentChanged
; 然后,您将能够检查,DesignMode
因此您只在执行期间添加列(而不是在设计期间).
我之前在使用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; }