gpt4 book ai didi

.net - 如何检索 DateTimePicker 的下拉状态?

转载 作者:行者123 更新时间:2023-12-02 20:56:32 25 4
gpt4 key购买 nike

我需要确定日历下拉列表当前是否显示在 WinForms DateTimePicker 中。我有一个继承自 DateTimePicker 的自定义控件,并且我正在处理 KeyDown 事件以便使用导航键执行操作,但如果日历下拉列表打开,我想绕过该代码,以便用户可以在那里使用他们的导航键。

对于 ComboBox 控件,可以很容易地使用 .DroppedDown 属性来检查它是否打开,但 DateTimePicker 没有这样的属性。

我目前正在执行以下操作:

Private _isDroppedDown As Boolean = False

Private Sub MyDateTimePicker_CloseUp(sender As Object, e As EventArgs) Handles Me.CloseUp
_isDroppedDown = False
End Sub

Private Sub MyDateTimePicker_DropDown(sender As Object, e As EventArgs) Handles Me.DropDown
_isDroppedDown = True
End Sub

但是,我想知道是否有比使用变量手动跟踪控件更好的方法来获取控件的 DroppedDown 状态?

最佳答案

您所做的对于一次性实例来说很好,但如果您的表单/类包含多个控件,则使用变量跟踪它们所有可能会变得笨拙且难以遵循。

一个简单的替代方法是使用控件的 .Tag 属性来记录变量状态并进行测试。然而,更好的方法是创建您自己的类来继承控件并添加您想要的属性,几乎使用您已有的相同代码。因此,在您的情况下,您将使用以下代码添加一个名为“MyDateTimePicker”的类:

Public Class MyDateTimePicker
Inherits DateTimePicker

Dim _isDroppedDown As Boolean = False

Public Property IsDroppedDown() As Boolean
Get
IsDroppedDown = _isDroppedDown
End Get
Set(value As Boolean)
_isDroppedDown = value
End Set
End Property

Private Sub MyDateTimePicker_CloseUp(sender As Object, e As System.EventArgs) Handles Me.CloseUp
_isDroppedDown = False
End Sub

Private Sub MyDateTimePicker_DropDown(sender As Object, e As System.EventArgs) Handles Me.DropDown
_isDroppedDown = True
End Sub

End Class

在下一次构建之后,新的 MyDateTimePicker 类应该出现在项目的“组件”选项卡下的工具箱中。它将具有与 DateTimePickers 关联的所有常用事件、方法和属性,以及新的 .IsDroppedDown 属性。

哦,如果您经常使用它,您可以将其创建为新的类库,然后只需将其构建的 DLL 包含在您的项目中即可。

关于.net - 如何检索 DateTimePicker 的下拉状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10744311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com