gpt4 book ai didi

c# - 在 C# 中刷新 ListView 时防止项目失去焦点

转载 作者:太空宇宙 更新时间:2023-11-03 20:22:27 25 4
gpt4 key购买 nike

我有 ListView 和一些列“ID”、“产品名称”和“供应商”。我可以添加、编辑或删除这些项目,并且在“弄乱”项目 ListView 后刷新如下。

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);
}

所以这个方法工作正常,除了每次我刷新列表时项目的焦点都丢失了,这是合乎逻辑的,因为我从列表中删除了所有项目并再次填充它。所以我的问题是我如何才能专注于编辑和新添加的项目,主要是当我编辑一些项目时我希望 listview 不要滚动到顶部而是留在编辑项目所在的位置。我尝试使用 FindItemWithText 方法,而不是将 ListView 的焦点项目设置为找到的项目,但它没有用。这种问题有ant解决方案吗?

最佳答案

将焦点项的索引保存到变量中:

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

稍后您可以恢复焦点执行:

listView.Items[oldFocusedIndex].Selected = true;

您还可以使项目对用户可见,因为 ListView 的滚动条在 Clear() 方法之后将保留在顶部:

listView.Items[oldFocusedIndex].EnsureVisible();

关于c# - 在 C# 中刷新 ListView 时防止项目失去焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12723705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com