步骤 1 : 创建继承控件类
Public Class Test_Control
Inherits ListBox
Public Sub New()
Items.Add("test")
End Sub
End Class
步骤 2 : 在设计器中拖动类到窗体
步骤 3 : 运行项目
结果 :
为什么会这样?!我在这里完全被难住了..我用谷歌搜索和谷歌搜索,我找不到任何解决方案或答案。
这给我带来了一些重大问题。我只是想为每个新创建的组合框添加一个初始的“选择一个...”选项。无论控件类型(文本框/组合框/列表框/等)如何,每个继承的控件类都会发生同样的事情。
如果我在 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(或类似的东西)。
关于.net - 为什么 New() 在我继承的控件上触发两次? (winforms),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17866172/