tín dụng đi vào astander cho việc cung cấp các giải pháp, mà làm cho một phần mở rộng rất đẹp:
using System.Linq;
using System.Runtime.InteropServices;
public static class Extensions {
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern int PostMessage(IntPtr hwnd, Int32 wMsg, Int32 wParam, Int32 lParam);
public static void Open(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);
}
}
Cách sử dụng:
dateTimePicker1.Open();
Bằng cách này, bạn có thể sử dụng lại Tiện ích mở rộng của mình bất kỳ lúc nào bạn muốn, hết lần này đến bất kỳ hình thức nào bằng cách sử dụng bất kỳ điều khiển DateTimePicker nào.
Tôi hy vọng một số bạn thấy rằng mẹo đơn giản hữu ích.
~ Joe
Điều này dường như bị hỏng trên Windows 7 hoặc .NET35. Lịch bật lên, nhưng nó không đáp ứng. Di chuột qua điều khiển không làm bất cứ điều gì và khi bạn nhấp vào một ngày, lịch sẽ biến mất nhưng không cập nhật .Value của điều khiển DateTimePicker. –
Kinda tối ma thuật! Works.Thanks! – fnc12