ListViewの最初のアイテムをプログラムで選択しようとしていますが、選択されていないようです。私は次のコードを使用しています:
if (listView1.Items.Count > 0)
listView1.Items[0].Selected = true;
実際、私は以前にこの問題を抱えていましたが、どうやってそれを解決できたか思い出せません!
おそらく、アイテムが選択されているので、別のコントロールにフォーカスがあるためわかりません。これを解決するには、アプリケーションの設計に応じて、いくつかの異なる方法があります。
簡単な解決策は、フォームが表示されるたびに最初にListView
にフォーカスを設定することです。ユーザーは通常、コントロールをクリックしてコントロールにフォーカスを設定します。ただし、プログラムでフォーカスを取得するコントロールを指定することもできます。これを行う1つの方法は、コントロールのタブインデックスを0に設定することです(最小値は、初期フォーカスを持つコントロールを示します)。 2番目の可能性は、フォームのLoad
イベントで、またはSelected
プロパティを設定した直後に、次のコード行を使用することです。
myListView.Select();
このソリューションの問題は、ユーザーがフォーム上の別のコントロール(テキストボックスやボタンなど)にフォーカスを設定したときに、選択したアイテムが強調表示されなくなることです。
これを修正するには、HideSelection
コントロールの ListView
プロパティ をFalseに設定する必要があります。これにより、コントロールがフォーカスを失っても、選択された項目は強調表示のままになります。
コントロールにフォーカスがある場合、選択されたアイテムの背景はシステムのハイライト色でペイントされます。コントロールにnotがフォーカスされている場合、選択されたアイテムの背景はグレー(または無効)のテキストに使用されるシステムカラーでペイントされます。
このプロパティは、設計時またはコードを使用して設定できます。
myListView.HideSelection = false;
if (listView1.Items.Count > 0)
{
listView1.Items[0].Selected = true;
listView1.Select();
}
リスト項目は、コントロールにフォーカスがない限り選択されて表示されません(またはHideSelection
プロパティをfalseに設定します)
私は問題と解決策がコディーグレイによって記述されたと思います!追加のメモがあります。
指定されたリストビュー項目(およびコントロール!)のフォーカスを確認してください。次のコード行でフォーカスと選択を設定できます。
this.listView1.Items[1].Selected = true;
this.listView1.Items[1].Focused = true;
しかし、集中制御は条件でした!
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
これは古い質問ですが、これが決定的な答えだと思います。
listViewRamos.Items[i].Focused = true;
listViewRamos.Items[i].Selected = true;
listViewRemos.Items[i].EnsureVisible();
コントロールにフォーカスがない可能性があるが、コントロールにフォーカスを強制する場合は、次の行を追加できます。
listViewRamos.Select();
マイクロソフトがあなたに代わってこれを行うSelectItem()
メソッドを追加しなかった理由は私にはありません。
ListViewItem.IsSelected = true;
ListViewItem.Focus();
if (listView1.Items.Count > 0)
{
listView1.FocusedItem = listView1.Items[0];
listView1.Items[0].Selected = true;
listView1.Select();
}