当前位置 : 主页 > 手机开发 > 其它 >

.net – 为什么New()在我继承的控件上触发两次? (的WinForms)

来源:互联网 收集:自由互联 发布时间:2021-06-19
第1步:创建内联控件类 Public Class Test_Control Inherits ListBox Public Sub New() Items.Add("test") End SubEnd Class 第2步:在设计器中将类拖到窗体中 第3步:运行项目 结果: 为什么会这样?!我完全被
第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(或类似的东西).

网友评论