首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DatetimePicker和MenuStrip中的其他控件

DatetimePicker和MenuStrip中的其他控件
EN

Stack Overflow用户
提问于 2017-04-18 10:16:50
回答 2查看 1.9K关注 0票数 1

我知道我可以通过以下行将DateTimePicker添加到我的MenuStrip中

代码语言:javascript
复制
Dim dp = New ToolStripControlHost(New DateTimePicker)
MenuStrip1.Items.Add(dp)  

但我不知道如何在设计时将DateTimePicker添加到MenuStrip中。它背后的诀窍是什么?我已经尝试和寻找了大约一个小时,我即将放弃,尽管我知道一定有办法!

TL;博士

如何在设计时将DateTimePicker添加到MenuStrip中?或者,我们可以将它添加到ToolStrip中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-18 15:34:20

在使用ToolStripControlHost时,您已经接近于解决方案,但是您需要从该类派生,如链接到示例中所示。这个例子令人沮丧的是,它没有用System.Windows.Forms.Design.ToolStripItemDesignerAvailabilityAttribute来修饰派生类以使其在设计图面上可用。

下面是一个极简的实现,以获得一个工作示例。您可能需要覆盖自动调整大小,以满足控件的需要/需求。实现重写Text属性,以防止设计器将无效文本分配给基础DateTimerPicker控件。

代码语言:javascript
复制
<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
票数 3
EN

Stack Overflow用户

发布于 2017-04-18 11:49:58

我想补充一下,但我相信这能证明答案是正确的。

我成功的唯一方法是在设计时(在表单中)添加一个,并将Visible设置为False,并使用菜单项将Visible设置为True (可能还需要设置位置和/或将其置于最前面)。

您确实需要再次手动处理将Visible设置为False

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43469427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档