トップページ > プログラム > 2015年05月11日 > HvlWSqoB

書き込み順位&時間帯一覧

21 位/170 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000000000022



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
ふらっと C#,C♯,C#(初心者用) Part115©2ch.net

書き込みレス一覧

ふらっと C#,C♯,C#(初心者用) Part115©2ch.net
363 :デフォルトの名無しさん[]:2015/05/11(月) 23:04:23.59 ID:HvlWSqoB
WinFormsのことで質問させていただきます
あるフォームで受け取った情報を元に子フォームを新たに表示させ、ユーザーに通知するアプリを書いてます
子フォームの方をどうしてもアクティブにしたくないのでCreateParamsをオーバーライドしてWS_EX_NOACTIVATEを付与しています
(また、通知を目的としているのでWS_EX_TOPMOSTも付与しました)
この時、子フォームの方でコンテキストメニューのアイテムをクリックするとアクティブになろうとし、親フォームも前面に表示されてしまいます
見た目がお粗末なので、アクティブにしたくない(≒親フォームを前面に表示したくない)のですがどうすればいいでしょうか?

コンテキストメニューはContextMenuStripを使用しています
メニューを表示した時点では何も起こらず、アイテムにカーソルを合わせて(左,中,右いずれも)クリックを押下した時点で現象が発生します
アイテム自体はToolStripMenuItemクラスのものを動的に生成したものをToolStripItemCollection.Add()で追加しています

ToolStripMenuItemクラスのPerformClick()が「マウスでクリックされたときに、ToolStripItem をアクティブにします。」という不穏なものだったので、アイテムを継承して隠蔽してみても同様に押下時点でアクティブになってしまいました
親フォームにもWS_EX_NOACTIVATEを付与してみても変わらず、クリックに関するあらゆるイベントを一旦外してみても変わりませんでした
ふらっと C#,C♯,C#(初心者用) Part115©2ch.net
371 :デフォルトの名無しさん[]:2015/05/11(月) 23:39:34.20 ID:HvlWSqoB
>>367
上に挙げた操作以外ではアクティブになりません
WM_MOUSEACTIVATEを受け取りメッセージのResultをWA_NOACTIVATEを代入して返すのも既に試してダメでした
他にあるかどうか調べてます

>>368
言葉不足ですみません、
説明上便宜的に親と子という単語を使っただけで特別何かしらの関係があるわけではありません


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。