| 2007/12/21(Fri) 10:48:15 編集(投稿者)
ItemActivate イベントと Activation プロパティとは盲点でした。そんな方法もあったんですね。これだと確かにマウス操作でうまくいくようです。
でもキーボードで操作するとなると…orz っていう問題もあるんですが、このあたりはもんもんさんのご判断ということになるでしょうか。
# > もんもん さん # 私も以前に ListView の選択キャンセルをやったことがあるのですが、今回と同様に結構面倒でした。なので別なアプローチを取ったほうが好ましいかと思います。
まどかさんのコードを C# に置き換えました。
private int _CurrentItemIndex = -1;
private void listView1_ItemActivate(object sender, EventArgs e) { if (listView1.SelectedItems.Count == 0) { return; }
int selectedIndex = listView1.SelectedItems[0].Index;
if (_CurrentItemIndex < 0) { _CurrentItemIndex = selectedIndex; return; }
if (selectedIndex != _CurrentItemIndex) { string msg = "行を変更しますか?"; DialogResult result = MessageBox.Show(msg, Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result != DialogResult.Yes) { listView1.Items[_CurrentItemIndex].Selected = true; listView1.Items[_CurrentItemIndex].Focused = true; listView1.Items[_CurrentItemIndex].EnsureVisible(); } else { _CurrentItemIndex = selectedIndex; } } }
|