2011-08-17 16 views
10

私はそこにいくつかの項目を持つListViewを持っています。 ListViewがフォーカスを失うと、最後に選択されたListViewItemはまだ灰色の背景で「選択」されます。
ListView.FocusLostでこれを達成したいと思います。選択がなくなり、ListView.SelectedIndexChangedイベントが発生します。
アイデアListViewでアイテムを選択解除するにはどうすればよいですか?

.NET CF 3.5を使用しています。

+0

編集されました。あなたの文章が見つかりました。 – Vladimir

答えて

16

親フォーム/コントロールからListViewにアクセスしているとします。

this.myListView.LostFocus += (s, e) => this.myListView.SelectedIndices.Clear(); 

は、[OK]を、あなたのケースではので、あなたがそのデリゲートを置き換えます:あなたは、フォームの/コントロールのコンストラクタ/ロードイベントにコードのこの部分を追加することができます

if (this.myListView.SelectedIndices.Count > 0) 
    for (int i = 0; i < this.myListView.SelectedIndices.Count; i++) 
    { 
     this.myListView.Items[this.myListView.SelectedIndices[i]].Selected = false; 
    } 

ますコードをより良い形式、btwにすることができます。

+1

SelectedIndicesには、少なくともコンパクトなフレームワーク3.5ではなく、 'Clear()'メソッドがありません。 – Zeemee

+0

@Mulmoth編集を参照してください – Vladimir

+0

素晴らしい - ありがとう! – Zeemee

1

これは簡単です。

this.myListView.SelectedIndex = -1; 
this.myListView.Update(); 
+2

SelectedIndexプロパティがありませんリストビューの場合 –

+0

これはWindows 10のユニバーサルアプリケーションで動作します。 +1 – JBernardo

1

これにアプローチする別の効果的な方法は、次のようになります。

foreach (ListViewItem i in myListView.SelectedItems) 
{ 
    i.Selected = false; 
} 
+0

'ListViewItem'に 'Selected'の定義がなく、 'ListViewItem'タイプの最初の引数を受け入れる拡張メソッド 'Selected'が見つかりませんでした – Choletski

+0

@Choletski @Jeff ment 'i.IsSelected = false ; 'i.Selected = false;'の代わりに '; – Jogge

3
myListView.SelectedItems.Clear(); 
2

私はこれが遅れている知っているが、場合には他の誰かが、私は解決策に追加したいソリューションを必要としていました。

フォーカスを外されたアイテムが避けられるように、Focusedプロパティをfalseに設定する必要があります。

for (int i = 0; i < this.myListView.SelectedIndices.Count; i++) 
{ 
    this.myListView.Items[this.myListView.SelectedIndices[i]].Selected = false; 
    this.myListView.Items[this.myListView.SelectedIndices[i]].Focused = false; 
} 
-1
if (listView1.SelectedItems.Count > 0) 
    for (int i = 0; i < listView1.SelectedItems.Count; i++) 
    { 
     listView1.SelectedItems[i].Selected = false; 
    } 
+0

質問はすでに5年前に答えられました。そして、あなたのソリューションは問題を解決しません - あなたはリストの最初の項目を選択解除しています。 –

0

あなたはむしろItemTemplateによりEditItemTemplateを、使用している場合は、なぜListView1.SelectedIndex =を把握しようとしているかもしれ-1;まだ動いていません。これは、ListView1.EditIndex = -1を使用する必要があるためです。

関連する問題