Luk*_*uke 3 vb.net design-time custom-controls menustrip visual-studio
我知道我可以使用以下几行将 DateTimePicker 添加到我的 MenuStrip
Dim dp = New ToolStripControlHost(New DateTimePicker)
MenuStrip1.Items.Add(dp)
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在设计时将 DateTimePicker 添加到 MenuStrip。这背后到底有何猫腻?我已经尝试和寻找了大约一个小时,尽管我知道必须有办法,但我即将放弃!
TL;DR
如何在设计时将 DateTimePicker 添加到我的 MenuStrip?或者,我们可以将其添加到 ToolStrip 中。
您已经接近使用ToolStripControlHost的解决方案,但您需要从该类派生,如链接示例中所示。该示例令人沮丧的是,它没有使用System.Windows.Forms.Design.ToolStripItemDesignerAvailabilityAttribute修饰派生类以使其在设计图面上可用。
以下是获取工作示例的极简实现。您可能需要覆盖自动调整大小以满足您对控件的需求/需求。该实现会覆盖该Text属性,以防止设计者将无效文本分配给基础DateTimerPicker控件。
<System.Windows.Forms.Design.ToolStripItemDesignerAvailability(
System.Windows.Forms.Design.ToolStripItemDesignerAvailability.ToolStrip _
Or System.Windows.Forms.Design.ToolStripItemDesignerAvailability.StatusStrip _
Or System.Windows.Forms.Design.ToolStripItemDesignerAvailability.MenuStrip)> _
Public Class TSDatePicker : Inherits ToolStripControlHost
Public Sub New()
MyBase.New(New System.Windows.Forms.DateTimePicker())
End Sub
Public ReadOnly Property ExposedControl() As DateTimePicker
Get
Return CType(Control, DateTimePicker)
End Get
End Property
<Browsable(False), EditorBrowsable(EditorBrowsableState.Advanced), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)>
Public Overrides Property Text As String
Get
Return ExposedControl.Text
End Get
Set(value As String)
' verify valid date
Dim dt As DateTime
If DateTime.TryParse(value, dt) Then
ExposedControl.Text = value
End If
End Set
End Property
End Class
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2049 次 |
| 最近记录: |