エクスプローラライクなアプリケーションを開発しています。
画面の左側にツリービューがあり、画面の右側にリストビューがあります。
リストビューにコンテキストメニューを割り当て、リストビューのアイテムが選択されたときに右クリックすると、アイテムを操作するコンテキストメニューを表示するようにしています。
リストビューの上にカーソルがある場合は、特に問題なく動作するのですが、リストビューのアイテムを選択した後に、ツリービューを(ツリーノードは選択しない)右クリックをすると、関係ないコンテキストメニューが表示されてしまいます。
こんなコードを書いています。
private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
// 何らかのアイテムを選択した状態のとき
if (listView1.SelectedIndices.Count > 0)
{
// コンテキストメニューを開く
e.Cancel = false;
}
else
{
// コンテキストメニューを開かない
e.Cancel = true;
}
}
画面のほかの部分(パネルとかボタン)の場合は右クリックしてもコンテキストメニューが表示されませんが、なぜかツリービューだとコンテキストメニューが表示されてしまいます。
マウスカーソルがリストビューから抜けたタイミングでリストビュー内の各アイテムの選択を解除するしか手はないのでしょうか?