5

System.Windows.Forms.ListViewに、データベースからの結果を次のように入力しています。

foreach (DataRow row in theTable.Rows)
{
    ...build item from row..

    myListView.Items.Add(item);
}

次に、DBから返される行とは異なる順序でリストビューを並べ替えたいので、

myListView.Sort();

しかし、リストビューの一番上のアイテムを選択したいのですが、うまくいきません。一番上のアイテム以外のものを選択しました。

myListView.Items[0].Selected = true;

Itemsコレクションは、foreachループで繰り返されるテーブルの行の順序で追加されるため、意味があります。

myListView.TopItem.Seleted=trueを使用しても機能しません。

では、並べ替えた後、リストビューの一番上のアイテムを選択するにはどうすればよいですか?

答えてくれてありがとう。

4

2 に答える 2

5

リスト ビューが現在選択されていますか? 選択されていない場合、選択されているアイテムは表示されません。

次のコードは機能しているようです。

    private void Populate(object sender, EventArgs e)
    {   
        listView1.Items.Add("D");
        listView1.Items.Add("B");
        listView1.Items.Add("A");
        listView1.Items.Add("C");
    }

    private void SelectFirst(object sender, EventArgs e)
    {
        listView1.Items[0].Selected = true;
        listView1.Select();
    }

    private void SortAndSelect(object sender, EventArgs e)
    {
        listView1.Sorting = SortOrder.Ascending;
        listView1.Sort();

        listView1.Items[0].Selected = true;
        listView1.Select();
    }

listView1.Select() に注意してください

于 2012-11-08T22:47:40.433 に答える
1

HideSelection が true に設定されている可能性があります。それを偽にして、試してみてください。

myListView.HideSelection = false;

さらに、リストビューは選択された項目を持つことができますが、他の項目に焦点を当てることはできません。したがって、フォーカスと選択の両方を一緒に設定することをお勧めします。

if (myListView.Items.Count > 0)
{
    myListView.Items[0].Selected = true;
    myListView.Items[0].Focused = true;
}

それがうまくいかない場合は、リストビュー自体にフォーカスを設定して、選択が正しい項目にあるかどうかを確認できます。

于 2012-11-08T22:49:29.440 に答える