0

自動ログオフ中にフォームを閉じる必要があります。フォームを反復してダイアログを閉じていますApplication.OpenForms

次の図に示すように、ダイアログに日時コントロール ( DateTimePicker) があり、カレンダー ウィンドウがアクティブになっている場合、ダイアログを閉じることができません。

http://ww.functionx.com/vcnet/controls/images/Calendar4.gif

Closeメソッドを呼び出してフォームを閉じようとしました。うまくいきませんでした。

次に、ウィンドウを列挙した後、以下に示すように WM_CLOSE メッセージを送信してカレンダー ウィンドウを閉じ、Closeフォームを呼び出しました。この場合、カレンダー ウィンドウは閉じられました。しかし、フォームは閉じませんでした

if (sb.ToString() == "SysMonthCal32")
{
    SendMessage(hWnd, 0x0010, IntPtr.Zero, IntPtr.Zero);             
}

どちらの場合も、ダイアログをクリックすると閉じました。

フォームを閉じるにはどうすればよいですか?

4

1 に答える 1

0

問題を再現できませんでした。これは、form.Close() を呼び出すと、日付ピッカー コントロールが開いているかどうかに関係なく、フォームが閉じられました。(PostMessage WM_CLOSE を使用して hwnd を形成しても同じ結果が得られました)

Hide メソッドを呼び出してから Show メソッドを呼び出すことで、日付ピッカー コントロールを「閉じる」ことができることがわかりました。

dateTimePicker1.Hide();
dateTimePicker1.Show();

これには、Close (または WM_CLOSE) のようにウィンドウ オブジェクトを破棄しないという利点もあります。

于 2012-10-10T22:11:11.370 に答える