Formをアクティブにせず表示
Formクラスのインスタンスを表示する場合は、FormのインスタンスメソッドであるShow()を呼び出します。
もちろんShowなので表示されます。
そして新しいFormが表示されると今までアクティブだったFormはNonアクティブになります。
普通はこれでいいのですが、Showするときにアクティブ化せずに表示したいという場合があります。
ですがこれを.Netのレベルでする方法が見当たりません。
なので困ったときのWin32APIです。
アクティブ化せずに表示するときのコードが以下になります。
[DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); Form form = new Form(); ShowWindow(form.Handle, 8);
まずWin32APIのShowWindowをDllImportして、第1引数にFormのHandleを。
第2引数には定数を指定します。今回は8という定数ですがこれはSW_SHOWNAとして定義されていたものです。
具体的なShowWindowの意味や他の定数などはmsdnを参照してください。
簡単ですが今回はこれで終わり。