web-dev-qa-db-ja.com

ListViewの項目をプログラムで選択する方法は?

ListViewの最初のアイテムをプログラムで選択しようとしていますが、選択されていないようです。私は次のコードを使用しています:

if (listView1.Items.Count > 0)
    listView1.Items[0].Selected = true;

実際、私は以前にこの問題を抱えていましたが、どうやってそれを解決できたか思い出せません!

59
Homam

おそらく、アイテムが選択されているので、別のコントロールにフォーカスがあるためわかりません。これを解決するには、アプリケーションの設計に応じて、いくつかの異なる方法があります。

  1. 簡単な解決策は、フォームが表示されるたびに最初にListViewにフォーカスを設定することです。ユーザーは通常、コントロールをクリックしてコントロールにフォーカスを設定します。ただし、プログラムでフォーカスを取得するコントロールを指定することもできます。これを行う1つの方法は、コントロールのタブインデックスを0に設定することです(最小値は、初期フォーカスを持つコントロールを示します)。 2番目の可能性は、フォームのLoadイベントで、またはSelectedプロパティを設定した直後に、次のコード行を使用することです。

    myListView.Select();
    

    このソリューションの問題は、ユーザーがフォーム上の別のコントロール(テキストボックスやボタンなど)にフォーカスを設定したときに、選択したアイテムが強調表示されなくなることです。

  2. これを修正するには、HideSelectionコントロールの ListViewプロパティ をFalseに設定する必要があります。これにより、コントロールがフォーカスを失っても、選択された項目は強調表示のままになります。

    コントロールにフォーカスがある場合、選択されたアイテムの背景はシステムのハイライト色でペイントされます。コントロールにnotがフォーカスされている場合、選択されたアイテムの背景はグレー(または無効)のテキストに使用されるシステムカラーでペイントされます。

    このプロパティは、設計時またはコードを使用して設定できます。

    myListView.HideSelection = false;
    
83
Cody Gray
if (listView1.Items.Count > 0)
{
    listView1.Items[0].Selected = true;
    listView1.Select();
}

リスト項目は、コントロールにフォーカスがない限り選択されて表示されません(またはHideSelectionプロパティをfalseに設定します)

30
VikciaR

私は問題と解決策がコディーグレイによって記述されたと思います!追加のメモがあります。

指定されたリストビュー項目(およびコントロール!)のフォーカスを確認してください。次のコード行でフォーカスと選択を設定できます。

this.listView1.Items[1].Selected = true;
this.listView1.Items[1].Focused = true;

しかし、集中制御は条件でした!

8
bitsmuggler
        int i=99;//is what row you want to select and focus
        listViewRamos.FocusedItem = listViewRamos.Items[0];
        listViewRamos.Items[i].Selected = true;
        listViewRamos.Select();
        listViewRamos.EnsureVisible(i);//This is the trick
3
Kursat Turkay

これは古い質問ですが、これが決定的な答えだと思います。

listViewRamos.Items[i].Focused = true;
listViewRamos.Items[i].Selected = true;
listViewRemos.Items[i].EnsureVisible();

コントロールにフォーカスがない可能性があるが、コントロールにフォーカスを強制する場合は、次の行を追加できます。

listViewRamos.Select();

マイクロソフトがあなたに代わってこれを行うSelectItem()メソッドを追加しなかった理由は私にはありません。

1
Jonathan Wood
ListViewItem.IsSelected = true;
ListViewItem.Focus();
0
user1724225
if (listView1.Items.Count > 0)
{
    listView1.FocusedItem = listView1.Items[0];
    listView1.Items[0].Selected = true;
    listView1.Select();
}
0
user1119399