DOBON.NET DOBON.NETプログラミング掲示板過去ログ

コンテキストメニュー内メニューアイテムの Popupイベントが発生しない

環境/言語:[C# WindowsXP]
分類:[.NET]

いつもお世話になっています。

コンテキストメニュー内の、メニューアイテムの Popupイベントが
発生しない現象が出ています。
どなたか回避方法をご存じないでしょうか。

コンテキストメニューには、A・B・C というメニューアイテムがあり、
Bにはサブメニュー B1・B2があるとします。

メニュー
A
B--B1
|-B2
C

コンテキストメニューを Showメソッドで表示後、メニューアイテム
B の Popupイベントで、サブメニュー B1・B2の初期表示処理を行い
たいと考えています。

コンテキストメニュー、メニューアイテムで、上記以外の処理を削除
して確認しましたが、やはりメニューアイテムの Popupイベントが
発生しない状況です。

よろしくお願いいたします。
■No6043に返信(ぱるさんの記事)

 ぱるさん、こんにちは。深山と申します。

> コンテキストメニュー内の、メニューアイテムの Popupイベントが
> 発生しない現象が出ています。

 こちらでも確認しました。
> コンテキストメニューを Showメソッドで表示後
> メニューアイテムの Popupイベントが発生しない
ようですね。
 フォーム上にボタンを配置して以下のようなコーディングで実験したところ、
メニュー B の Popup イベントは発生しませんでした。

    private void button1_Click(object sender, System.EventArgs e)
    {
        contextMenu1.Show((Control)sender, new Point(0, 0));
    }


 原因の究明には至っていないのですが、次のように Show メソッドの引数に指定する
コントロールの ContextMenu プロパティを変更することすることでイベント発生を
確認できました。

    private void button1_Click(object sender, System.EventArgs e)
    {
        ContextMenu cm = ((Control)sender).ContextMenu;
        ((Control)sender).ContextMenu = contextMenu1;
        contextMenu1.Show((Control)sender, new Point(0, 0));
        ((Control)sender).ContextMenu = cm;
    }

# ‥‥あんまりスマートじゃないですね(^_^;)

 この内容でぱるさんの用件を満たすかどうか定かではありませんけど、参考までに。
■No6106に返信(深山さんの記事)
> ■No6043に返信(ぱるさんの記事)
>
>  ぱるさん、こんにちは。深山と申します。
>
>>コンテキストメニュー内の、メニューアイテムの Popupイベントが
>>発生しない現象が出ています。
>
>  こちらでも確認しました。
>>コンテキストメニューを Showメソッドで表示後
>>メニューアイテムの Popupイベントが発生しない
> ようですね。
>  フォーム上にボタンを配置して以下のようなコーディングで実験したところ、
> メニュー B の Popup イベントは発生しませんでした。
>
> private void button1_Click(object sender, System.EventArgs e)
> {
> contextMenu1.Show((Control)sender, new Point(0, 0));
> }
>
>
>  原因の究明には至っていないのですが、次のように Show メソッドの引数に指定する
> コントロールの ContextMenu プロパティを変更することすることでイベント発生を
> 確認できました。
>
> private void button1_Click(object sender, System.EventArgs e)
> {
> ContextMenu cm = ((Control)sender).ContextMenu;
> ((Control)sender).ContextMenu = contextMenu1;
> contextMenu1.Show((Control)sender, new Point(0, 0));
> ((Control)sender).ContextMenu = cm;
> }
>
> # ‥‥あんまりスマートじゃないですね(^_^;)
>
>  この内容でぱるさんの用件を満たすかどうか定かではありませんけど、参考までに。


深山さん、ご回答ありがとうございます。

正直、自分の環境が悪いため起きている現象かと思い、VSの再インストール
を考えていたところなので、大変助かりました。

教えていただいた方法で、こちらでも確認し、イベントを起動できました。

> # ‥‥あんまりスマートじゃないですね(^_^;)
とんでもない!自分にとっては大変参考になりました。
ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板