ToolStripTextBox中的自定义TextBox

时间:2013-10-23 02:26:09

标签: vb.net winforms

我有一个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,但不是我的。令我惊讶的是,我发现没有构造函数接收Control,它不在Object Brower中,也不会出现在intellisense框中。

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

有没有一种标准而合理的方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

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

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

ToolStrip1.Items.Add(New MyTextbox)

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