5

第 1 步:创建继承的控件类

Public Class Test_Control
    Inherits ListBox

    Public Sub New()
        Items.Add("test")
    End Sub
End Class

第2步:在设计器中拖动类到窗体

在此处输入图像描述

第三步:运行项目

结果

在此处输入图像描述

为什么会这样?!我在这里完全被难住了。我用谷歌搜索和搜索,但找不到任何解决方案或答案。

这给我带来了一些重大问题。我只是想为每个新创建的组合框添加一个初始的“选择一个...”选项。无论控件类型如何(文本框/组合框/列表框/等),每个继承的控件类都会发生同样的事情。

如果我在 New() 中使用消息框,也会发生同样的事情。一旦我运行我的应用程序,就会出现两个消息框。

在此处输入图像描述

4

2 回答 2

5

您需要告诉设计者不要序列化 ​​items 集合:

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 并不是一个好的调试工具。您可能会在运行时调用 new(或类似的东西)时让 WinForms 设计器调用 new。

于 2013-07-25T19:01:31.020 回答
2

第一个test来自设计器,您将在构造函数中添加第二个。

在添加之前从设计器中删除test或清除构造函数中的项目,如下所示:

Items.Clear()
于 2013-07-25T18:43:55.733 回答