0

我有一个 ToolStripTextBox,但我想将它设置为我自己的 MyCustomTextBox。这是我在其他地方使用的一个类,它进行了一些验证。

首先,我尝试设置 Control ot TextBox 属性,但它们是只读的而不是可覆盖的。

然后我尝试在派生类的构造函数中设置我的控件:

Public Class MyCustomSingleToolStripButton
  Inherits ToolStripTextBox

  Sub New()
    MyBase.New(New MyCustomTextBox)
  End Sub
End Class

正如 ToolStripTextBox 的文档中所建议的那样

http://msdn.microsoft.com/en-us/library/58xwdff2.aspx

Public Sub New(c As Control)

它编译正常,但我在运行时遇到异常,微软建议我调用空构造函数,我会得到一个不错的 TextBox,但不是我的。令我惊讶的是,我看到没有构造函数接收控件,它不在对象浏览器中,也不出现在智能感知框中。

最后我尝试直接从 ToolStripControlHost 派生我的类,但它看起来真的很糟糕,我必须自定义所有

有没有标准和合理的方法来做到这一点?

4

1 回答 1

0

您可以做的是创建一个新版本的文本框,它继承自 ToolStripTextBox,并将其作为新对象添加到工具条的 Items 集合中:

Public Class MyTextbox
    Inherits ToolStripTextBox
    Public Sub New()
        Me.Text = "Test"
    End Sub
End Class

ToolStrip1.Items.Add(New MyTextbox)

如果您将控件作为用户控件添加到项目中,它将自动添加到设计器中工具条的下拉列表中。

于 2013-10-23T15:52:34.073 回答