在C#中,你可以創建一個擴展下拉列表中的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
和that`s吧:)
謝謝!這很好用! – Criel
打開日期選擇器效果很好,如果用戶決定通過控件選項卡,是否有辦法關閉它?目前,它打開罰款,但不會讓我選中,除非選擇一個日期。我試過通過代碼發送Esc鍵來取消日期選擇器和選項卡,但似乎無法使其正常工作。還有另一個SendKey關閉日期選取器嗎? – Criel
@Criel更新答案。 – LarsTech