C# 使用DateTimePicker关闭对话框

C# 使用DateTimePicker关闭对话框,c#,.net,windows,winforms,C#,.net,Windows,Winforms,我们要求在自动注销期间关闭表单。我们通过在Application.OpenForms 如果对话框具有日期时间控件(DateTimePicker),且日历窗口处于活动状态,则无法关闭对话框,如下图所示 我试图通过调用close方法来关闭表单。它不起作用 然后我发送WM_CLOSE消息,在枚举窗口后关闭日历窗口,如下所示,然后在表单上调用CLOSE。在这种情况下,日历窗口关闭。但是表单没有关闭 if (sb.ToString() == "SysMonthCal32") { SendMess

我们要求在自动注销期间关闭表单。我们通过在
Application.OpenForms

如果对话框具有日期时间控件(
DateTimePicker
),且日历窗口处于活动状态,则无法关闭对话框,如下图所示

我试图通过调用
close
方法来关闭表单。它不起作用

然后我发送WM_CLOSE消息,在枚举窗口后关闭日历窗口,如下所示,然后在表单上调用
CLOSE
。在这种情况下,日历窗口关闭。但是表单没有关闭

if (sb.ToString() == "SysMonthCal32")
{
    SendMessage(hWnd, 0x0010, IntPtr.Zero, IntPtr.Zero);             
}
在这两种情况下,如果单击对话框,它都会关闭


如何关闭窗体?

我无法复制您的问题,这是对form.close()的调用导致窗体关闭,无论日期选择器控件是否打开。(在表单的hwnd附近使用PostMessage WM_也得到了相同的结果)

我发现我可以通过调用日期选择器控件的Hide和Show方法使其“close up”:

dateTimePicker1.Hide();
dateTimePicker1.Show();
这还有一个优点,即不会像Close(或WM_Close)那样破坏任何窗口对象