简体   繁体   中英

How not to show calendar in the DateTimePicker when user clicks DropDown button

In the DateTimePicker when user clicks DropDown button, a calendar gets displayed. I don't want to show calendar on the DropDown event.

Is there some way to overwrite this event and to show custom form when user clicks DropDown button??

I don't want to show calendar on the DropDown event.

You can prevent the calendar from being displayed by setting the control's ShowUpDown property to true . Instead of the drop-down calendar, it will instead show a spin button to the side of the DateTimePIcker control that allows the user to select the desired date/time.

Is there some way to overwrite this event and to show custom form when user clicks DropDown button??

Well, yeah, I guess so. You can handle the DropDown event , which gets raised when the control shows the drop-down calendar. In this event handler, you could display whatever form you wanted. The only problem is that the drop-down calendar is still going to be shown as normal. I don't know how you prevent that from happening.

You can, however, hack around it by forcing the drop-down calendar closed again. To do that, P/Invoke the SendMessage function and send the control the DTM_CLOSEMONTHCAL message .

[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

private const uint DTM_FIRST         = 0x1000;
private const uint DTM_CLOSEMONTHCAL = DTM_FIRST + 13; 

public static void CloseCalendar(this DateTimePicker dtp)
{
    SendMessage(dtp.Handle, DTM_CLOSEMONTHCAL, IntPtr.Zero, IntPtr.Zero);
}

But I can't imagine the reason you would want to do this. If you don't want a calendar or a spin-button control, then you don't want a DateTimePicker. Just use a regular combo box or a drop-down button, then you can display whatever form you want when it is clicked.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM