コントロールに追加したい機能DateTimePicker
が実際に可能かどうかを確認しているだけです。
私がやりたいのはDateTimePicker
、日付ピッカーを表示するために矢印をクリックするのではなく、日付の入力を開始できるように、ユーザーがタブで日付ピッカーのドロップダウンを表示することです。
MSDN からこれについて何も見ていませんが、見落としている可能性があります。これは可能ですか?
コントロールに追加したい機能DateTimePicker
が実際に可能かどうかを確認しているだけです。
私がやりたいのはDateTimePicker
、日付ピッカーを表示するために矢印をクリックするのではなく、日付の入力を開始できるように、ユーザーがタブで日付ピッカーのドロップダウンを表示することです。
MSDN からこれについて何も見ていませんが、見落としている可能性があります。これは可能ですか?
プログラムで 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
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
そしてそれはそれです:)