1

リストビューといくつかの列「ID」、「製品名」、「ベンダー」があります。これらのアイテムを追加、編集、または削除することができ、アイテムリストビューを「めちゃくちゃ」にした後、このように更新されます。

listView.Items.Clear();
foreach (var item in result)
{
    ListViewItem lv = new ListViewItem(item.ID.ToString());
    lv.SubItems.Add(item.Name.ToString());
    lv.SubItems.Add(item.Vendor.ToString());
    listView.Items.Add(lv);
}

したがって、このメソッドは、リストを更新するたびにアイテムのフォーカスが失われることを除いて正常に機能します。これは、リストからすべてのアイテムを削除して再度入力したため、論理的です。したがって、私の問題は、編集されたアイテムと新しく追加されたアイテムに焦点を当てる方法です。主に、いくつかのアイテムを編集するときに、リストビューを一番上までスクロールせずに、編集されたアイテムがあった場所にとどまることを望みます。メソッドFindItemWithTextを試してみましたが、リストビューのフォーカスされたアイテムを見つかったアイテムに設定しましたが、うまくいきませんでした。この種の問題に対するアリの解決策はありますか?

4

1 に答える 1

5

フォーカスされた項目のインデックスを変数に保存します。

int oldFocusedIndex = listView.SelectedItems[0].Index;

その後、次のコマンドを実行してフォーカスを復元できます。

listView.Items[oldFocusedIndex].Selected = true;

メソッドListViewの後、スクロールバーが上部に残るため、アイテムをユーザーに表示することもできます。Clear()

listView.Items[oldFocusedIndex].EnsureVisible();
于 2012-10-04T09:07:00.707 に答える