none
リストビューのアイテムを選択したときのコンテキストメニューがツリービューで表示されてしまう RRS feed

  • 質問

  • エクスプローラライクなアプリケーションを開発しています。

    画面の左側にツリービューがあり、画面の右側にリストビューがあります。

    リストビューにコンテキストメニューを割り当て、リストビューのアイテムが選択されたときに右クリックすると、アイテムを操作するコンテキストメニューを表示するようにしています。

    リストビューの上にカーソルがある場合は、特に問題なく動作するのですが、リストビューのアイテムを選択した後に、ツリービューを(ツリーノードは選択しない)右クリックをすると、関係ないコンテキストメニューが表示されてしまいます。

    こんなコードを書いています。

    private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
      {

       // 何らかのアイテムを選択した状態のとき
       if (listView1.SelectedIndices.Count > 0)
       {
         // コンテキストメニューを開く
         e.Cancel = false;

        }
        else
        {
         // コンテキストメニューを開かない
         e.Cancel = true;
        }

      }

    画面のほかの部分(パネルとかボタン)の場合は右クリックしてもコンテキストメニューが表示されませんが、なぜかツリービューだとコンテキストメニューが表示されてしまいます。

    マウスカーソルがリストビューから抜けたタイミングでリストビュー内の各アイテムの選択を解除するしか手はないのでしょうか?

     

    2007年2月19日 9:56

すべての返信

  • 一般的には、contextMenuStrip1.SourceControlで判断して、コンテキストメニューを切り替えるのが良いと思います。
    2007年2月20日 1:16
    モデレータ
  •  tetsuzo さんからの引用

    リストビューの上にカーソルがある場合は、特に問題なく動作するのですが、リストビューのアイテムを選択した後に、ツリービューを(ツリーノードは選択しない)右クリックをすると、関係ないコンテキストメニューが表示されてしまいます。

     
    そもそも、上記のような動きはしないはずなのですが、新規プロジェクトでツリービューとリストビューを配置しても同様の問題が発生しますか?
    あやまって、TreeView の ContextMenuStrip プロパティを設定してしまっているとか、そういう問題ではないでしょうか?
     
    2007年2月20日 5:08