[英]Why is New() firing twice on my inherited controls? (winforms)
第1步 :创建内联控件类
Public Class Test_Control
Inherits ListBox
Public Sub New()
Items.Add("test")
End Sub
End Class
第2步 :在设计器中将类拖到窗体中
第3步 :运行项目
结果 :
为什么会这样?! 我完全被困在这里..我用谷歌搜索和谷歌搜索,我找不到任何解决方案或答案。
这给我带来了一些重大问题。 我只是想为每个新创建的Combobox添加一个初始的“Select one ...”选项。 每个继承的控件类都会发生同样的事情,无论控件类型如何(textbox / combobox / listbox / etc)。
如果我在New()中使用消息框,也会发生同样的事情。 运行应用程序后会立即显示两个消息框。
您需要告诉设计者不要序列化项目集合:
Public Class Test_Control
Inherits ListBox
Public Sub New()
Items.Add("test")
End Sub
<DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)> _
Public Shadows ReadOnly Property Items As ListBox.ObjectCollection
Get
Return MyBase.Items
End Get
End Property
End Class
就两个消息框而言,MessageBoxes不是一个好的调试工具。 您可能正在让WinForms设计器调用new,而运行时调用new(或类似的东西)。
第一个test
来自设计器,您在构造函数中添加第二个test
。
在添加之前从设计器中删除test
或清除构造函数中的项目,如下所示:
Items.Clear()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.