vb.net - 从 DateTimePicker 获取选定的值

标签 vb.net winforms datetimepicker

我想从 VB 中的 DateTimePicker 获取选定的值(如果我仅选择日期值,那么我想仅获取选定的日期值。)

enter image description here

在此图像中,我从此 DateTimePicker 选择了(蓝色标记)年份值。所以我只需要今年的值。

TextBox 的情况下,我可以使用

获取选定的值
TextEndTime.SelectedText

是否有任何语法或方法可以从 DateTimePicker 获取所选值?

最佳答案

由于可以使用箭头键操作 DateTimePicker 控件,因此您可以使用 SendKeys 更改当前选定的值。

以下示例获取 DateTimePicker 的当前 DateTime 值,并在发送 键后将该值与新值进行比较值(value)。最后,它将 DateTimePicker 重置为原始值。
因此变量currSelected将包含最后一个Selection

Dim currVal As DateTime
Dim newVal As DateTime
Dim valCheck As Boolean
Dim currSelected As Selection = Selection.None

Public Enum Selection
    None = 0
    Year = 1
    Month = 2
    Day = 3
End Enum

Private Sub CheckDTPSelection(dtp As DateTimePicker)
    valCheck = True
    currVal = dtp.Value
    SendKeys.Send("{UP}")
End Sub

Sub RefreshSelection(dtp As DateTimePicker)
    If valCheck Then
        newVal = dtp.Value

        If currVal.Year <> newVal.Year Then
            currSelected = Selection.Year
        ElseIf currVal.Month <> newVal.Month Then
            currSelected = Selection.Month
        ElseIf currVal.Day <> newVal.Day Then
            currSelected = Selection.Day
        End If

        dtp.Value = currVal
        valCheck = False
    End If
End Sub

Private Sub MyDateTimePicker_DropDown(sender As Object, e As EventArgs) Handles MyDateTimePicker.DropDown
    RemoveHandler MyDateTimePicker.MouseUp, AddressOf MyDateTimePicker_MouseUp
End Sub

Private Sub MyDateTimePicker_CloseUp(sender As Object, e As EventArgs) Handles MyDateTimePicker.CloseUp
    AddHandler MyDateTimePicker.MouseUp, AddressOf MyDateTimePicker_MouseUp
    CheckDTPSelection(MyDateTimePicker)
End Sub

Private Sub MyDateTimePicker_KeyUp(sender As Object, e As KeyEventArgs) Handles MyDateTimePicker.KeyUp
    If e.KeyValue = Keys.Left OrElse e.KeyValue = Keys.Right Then
        CheckDTPSelection(MyDateTimePicker)
    End If
End Sub

Private Sub MyDateTimePicker_MouseUp(sender As Object, e As MouseEventArgs) Handles MyDateTimePicker.MouseUp
    CheckDTPSelection(MyDateTimePicker)
End Sub

Private Sub MyDateTimePicker_ValueChanged(sender As Object, e As EventArgs) Handles MyDateTimePicker.ValueChanged
    Dim dtp As DateTimePicker = DirectCast(sender, DateTimePicker)

    RefreshSelection(dtp)
End Sub

Private Sub Btn_WhatsSelected_Click(sender As Object, e As EventArgs) Handles Btn_WhatsSelected.Click
    'Show the current selected value in a MessageBox
    MessageBox.Show(currSelected.ToString())
End Sub

关于vb.net - 从 DateTimePicker 获取选定的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52094782/

相关文章:

C# 相当于 VB LINQ 查询

javascript - 在 Formik 组件内使用 React-datetime 保存数据时出现问题

vb.net 检查注册表子键值是否存在

javascript - 使用 javascript 选择一行中除 RadGrid 中的一列之外的所有列

windows - 我怎样才能强制 Aero 绘制一个无边框窗口,就好像它处于事件状态一样,即使它不是?

c++ - WINFORM C++ Managed string->unmanaged string 在与 fstream 结合使用时产生意外结果

delphi - Delphi 7 中的 DateTimePicker 对齐

javascript - 防止 jQuery timepicker 插件自动打开

asp.net - 使用 HtppWebRequest 发布的表单数据无效

c# - .NET Custom UserControl 的内容在调整父级大小时消失