Есть способ сделать это, но это что-то вроде хака (мне бы это не очень понравилось).Как уже указывалось, вы можете открыть календарь, используя SendMessage
, но это не работает, если ShowUpDown
истинно (я понимаю, что у вас есть).
Итак, щелкните правой кнопкой мышиВам нужно сначала установить для ShowUpDown значение false, а затем отобразить календарь.Чтобы снова показать вверх-вниз, установите ShowUpDown
в значение true в ValueChanged и событие Leave средства выбора даты и времени.
[DllImport("user32.dll", SetLastError = true)]
private static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
private const uint WM_SYSKEYDOWN = 0x104;
void dateTimePicker1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
this.dateTimePicker1.ShowUpDown = false;
SendMessage(dateTimePicker1.Handle, WM_SYSKEYDOWN, (int)Keys.Down, 0);
}
else
{
this.dateTimePicker1.ShowUpDown = true;
}
}
// Connect this to ValueChanged and Leave events.
private void resetDateTimePickerShowUpDown(object sender, EventArgs e)
{
this.dateTimePicker1.ShowUpDown = true;
}