当前位置: 首页 > 知识库问答 >
问题:

在c#中刷新列表视图时防止项目失去焦点

谭昕
2023-03-14

我有列表视图和一些列“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);
}

所以这个方法工作得很好,除了每次我刷新列表的时候,项目的焦点都丢失了,这是合乎逻辑的,因为我从列表中删除了所有的项目,并再次填充它。所以我的问题是,我如何才能保持对编辑和新添加的项目的关注,主要是当我编辑一些项目时,我希望listview不要滚动到顶部,而是停留在编辑项目的地方。我尝试使用FindItemWithText方法,然后将listview的焦点项设置为找到的项,但这不起作用。这种问题有什么解决办法吗?

共有1个答案

弓嘉纳
2023-03-14

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

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

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

listView.Items[oldFocusedIndex].Selected = true;

由于在< code>Clear()方法之后,< code>ListView的滚动条将保持在顶部,因此您还可以使该项对用户可见:

listView.Items[oldFocusedIndex].EnsureVisible();
 类似资料:
  • 我正在设计一个主要通过键盘控制的Android应用程序。 在此应用程序中,有两个彼此相邻的列表视图。但是,当焦点在列表视图之间更改时,新列表视图中的选择将更改为最接近旧列表视图中所选内容的项目 - 我不希望所选项目更改,直到用户随后在键盘上按 UP 或 DOWN 键。 例子: 列表A未聚焦,选择了项目3。列表B当前具有焦点,并且在该列表视图中,项目B当前被选择。 目前,如果用户按下键盘上的“左”,

  • 问题内容: 我有一个简单的hibernate查询,例如: 没什么花哨的,但是它在一个相当大的事务中被多次调用(持续一秒钟,可能会加载数十个或数百个实体)。Profiler显示很多时间花在: 换句话说-在运行实际查询之前刷新会更改。 我能以某种方式完全阻止Hibernate进行刷新吗? 如果没有,我该怎么做才能使其更快? 问题答案: 默认情况下,hibernate在会话期间发出查询之前刷新(Flus

  • 我正在使用javafx tableview和observableList,我试图防止List包含重复的项目。在做了一些搜索之后,我发现一个observableSet可以通过覆盖这些方法来完成这项工作:equals()和hashcode()。 但是javaFX tableview不能保存可观察集的问题: 我还计划计算tableview中a列的some,所以我需要 我真的对正确的方法感到困惑。所以,我

  • 因此,如果用户输入“1234”,他们将在EditText字段中看到“1234”。但当该字段失去焦点时,我希望它显示“*****” 因此,我实现了一个自定义TransformationMethod,它只会在EditText字段没有焦点时屏蔽输入的文本。 当我输入文本“12345”时,它会显示它应该“12345”,但当我单击不同的字段时,数字永远不会被掩盖。我想看 "*****" 但我仍然看到相同的“

  • 问题内容: 我有一个数据库SQLite,然后使用SimpleCursorAdapter,将值显示到列表视图中。但是,我想重新排列列表视图项,并在顶部显示ID#1,然后显示ID号2,依此类推。问题是,我无法掌握根据以下内容重新分配列表视图项的概念在内容提供商提供的某些ID号上。如果您知道,请分享。谢谢。 问题答案: 如果正确使用SQLite,则在查询数据库时应该能够执行“按ID排序”。 如果不是这种