C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 136 を表示中)
■79951 / )  Re[12]: カラーパレット任意の座標に表示する
□投稿者/ 魔界の仮面弁士 (738回)-(2016/05/30(Mon) 19:22:14)
No79947 (とっちゃん さん) に返信
>>if (dlg.ShowDialog(this.archPaint) == DialogResult.OK) としたところ
> ShowDialog に渡すウィンドウオブジェクトをトップレベルのオブジェクトにしてみてください。

# そういえば、普段は Form を指定するばかりで、
# 子ウィンドウを指定した事は無かったです。>自分


> トップレベルとは、子ウィンドウではないフォームのことです。

実験のため、あえて他プロセスのウィンドウを指定してみました。
さらに、自フォームは TopMost = true を設定しています。

NativeWindow n = new NativeWindow();
n.AssignHandle( メモ帳のウィンドウハンドル );
if (dlg.ShowDialog(n) == DialogResult.OK)


この場合、呼び出し元フォームが操作不能な状態に陥りました。

メモ帳をクリックすると、カラーダイアログが操作可能になりますが、
自フォームが TopMost のため、それより手前には出てこられません。
(カラーダイアログが閉じられれば、操作可能な状態に戻ります)


操作できないという点だけ見れば、kazu さんのいう「固まった」状態に近い気がしますので、
やはり、ShowDialog の引数で、呼び出し元フォームを指定しておいた方が良いと思います。
返信 編集キー/


管理者用

- Child Tree -