3

コントロールに追加したい機能DateTimePickerが実際に可能かどうかを確認しているだけです。

私がやりたいのはDateTimePicker、日付ピッカーを表示するために矢印をクリックするのではなく、日付の入力を開始できるように、ユーザーがタブで日付ピッカーのドロップダウンを表示することです。

MSDN からこれについて何も見ていませんが、見落としている可能性があります。これは可能ですか?

4

2 に答える 2

2

プログラムで DateTimePicker コントロールのカレンダーを開くから、これを試すことができます。

Private Sub DateTimePicker1_Enter(ByVal sender As Object, ByVal e As EventArgs) _
                                  Handles DateTimePicker1.Enter
  SendKeys.Send("%{DOWN}")
End Sub

ドロップダウンをタブで移動するには、次のようにします。

Private Sub DateTimePicker1_KeyDown(ByVal sender As Object, _
                                    ByVal e As KeyEventArgs) _
                                    Handles DateTimePicker1.KeyDown
  If e.KeyCode = Keys.Tab Then
    SendKeys.Send("%{F4}")
    Me.SelectNextControl(DateTimePicker1, True, True, True, True)        
  End If
End Sub
于 2012-12-21T16:20:57.163 に答える
1

C#では、DropDown the DateTimePickerの拡張機能を作成できます。これを作成したのは、完全に忘れてしまったためです。D

public static void OpenDateTime(this DateTimePicker obj)
        {
            const int WM_LBUTTONDOWN = 0x0201;
            int width = obj.Width - 10;
            int height = obj.Height / 2;
            int lParam = width + height * 0x00010000; // VooDoo to shift height
            PostMessage(obj.Handle, WM_LBUTTONDOWN, 1, lParam);
        }

使用法:

private void dateTimePicker1_Enter(object sender, EventArgs e)
{
    dateTimePicker1.OpenDateTime();
}

これがVB.NETです。まず、モジュールを作成してこのコードを貼り付ける必要があります

Imports System.Runtime.CompilerServices
Imports System.Runtime.InteropServices

Module Module1
    <DllImport("user32.dll", CharSet:=CharSet.Auto)> _
    Private Function PostMessage(hwnd As IntPtr, wMsg As Int32, wParam As Int32, lParam As Int32) As Integer
    End Function
    <Extension()>
    Public Sub OpenDateTime(obj As DateTimePicker)
        Const WM_LBUTTONDOWN As Integer = &H201
        Dim width As Integer = obj.Width - 10
        Dim height As Integer = obj.Height / 2
        Dim lParam As Integer = width + height * &H10000
        PostMessage(obj.Handle, WM_LBUTTONDOWN, 1, lParam)
    End Sub
End Module

使用法は次のとおりです。

Private Sub DateTimePicker1_Enter(sender As System.Object, e As System.EventArgs) Handles DateTimePicker1.Enter
    DateTimePicker1.OpenDateTime()
End Sub

そしてそれはそれです:)

于 2012-12-21T16:30:43.770 に答える