Vb.net ToolStripTextBox中的自定义文本框

Vb.net ToolStripTextBox中的自定义文本框,vb.net,winforms,Vb.net,Winforms,我有一个ToolStripTextBox,但我想将其设置为我自己的MyCustomTextBox。这是我在其他地方使用的一个类,可以进行一些验证 首先,我尝试设置控件的文本框属性,但它们是只读的,不可重写 然后我尝试在派生类的构造函数中设置控件: Public Class MyCustomSingleToolStripButton Inherits ToolStripTextBox Sub New() MyBase.New(New MyCustomTextBox) End

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

首先,我尝试设置控件的文本框属性,但它们是只读的,不可重写

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

Public Class MyCustomSingleToolStripButton
  Inherits ToolStripTextBox

  Sub New()
    MyBase.New(New MyCustomTextBox)
  End Sub
End Class
正如ToolStripTextBox文档中所建议的那样

它编译正常,但我在运行时遇到一个异常,微软建议我调用空构造函数,我会得到一个很好的文本框,但不是我的。令我惊讶的是,我发现没有构造函数接收控件,它既不在Object Brower中,也不出现在intellisense框中

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


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

您可以做的一件事是创建从ToolStripTextBox继承的文本框的新版本,并将其作为新对象添加到toolstrip的Items集合中:

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

ToolStrip1.Items.Add(New MyTextbox)

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

这是Winforms/WPF/Silverlight/ASP/Etc吗?确实需要从ToolStripControlHost派生来嵌入自己的自定义控件。“它看起来真的很糟糕”对我们帮不了你。我的意思是,我的ToolStripControlHost派生类显示的文本框没有宽度,它适应输入的文本,边框是圆形的,高度低于标准文本框,某些地方的背景是白色的,但文本后面是灰色的。我用相同的设置替换了以前派生的ToolStripTextBox(它看起来很正确),但似乎没有考虑它们。我应该配置类中的所有视觉设置吗?谢谢
Public Class MyTextbox
    Inherits ToolStripTextBox
    Public Sub New()
        Me.Text = "Test"
    End Sub
End Class

ToolStrip1.Items.Add(New MyTextbox)