更新新项目时如何在 WinForms ListView 控件中自动向下滚动?

Posted

技术标签:

【中文标题】更新新项目时如何在 WinForms ListView 控件中自动向下滚动?【英文标题】:How to auto scroll down in WinForms ListView control when update new item? 【发布时间】:2011-01-02 03:01:12 【问题描述】:

更新新项目时如何在ListView控件中自动向下滚动?

我试过了

listView1.Focus();
listView1.Items[listView1.Items.Count - 1].Selected = true;

但这不起作用。

【问题讨论】:

WinForms? WPF?请说明... 【参考方案1】:

试试

listView1.Items[listView1.Items.Count - 1].EnsureVisible();

【讨论】:

我可以补充一点,这是一个仅限 Winforms 的解决方案,EnsureVisible 在 WPF ListView 上不存在。之所以这么说,是因为我在谷歌搜索“WPF ListView 自动滚动到底部”时点击了这个页面。 听起来很公平。您是否有指向 WPF 解决方案的链接,以帮助其他人出于同样的原因获得此答案? 问题似乎是由于无法通过属性访问 WPF ListView 上的内置 ScrollViewer,我现在只是在测试一个解决方案,并将其写在我的博客上,链接到跟随。 终于有时间写这篇博文了,这里有一个 WPF 解决方案供参考。 dutton.me.uk/2013/08/13/… @Dutts 具有讽刺意味的是,在 cmets 中提到 W P F 的次数越多,谷歌就越有可能错误地列出这个问题。搜索引擎的上下文感知能力不是很强。【参考方案2】:

老式的解决方案:

 ListView1.SetFocus;
 PostMessage(ListView1.Handle, WM_KEYDOWN, VK_DOWN, 0);

【讨论】:

【参考方案3】:

其中 x 是 int,是列表中您要查看的项目的整数

listView1.Items[x].Focus();
listView1.Items[x].Selected = true;
listView1.EnsureVisible(x);

【讨论】:

【参考方案4】:

另一种可能的解决方案:

listview1.TopItem = listView1.Items[listView1.Items.Count - 1];

【讨论】:

【参考方案5】:

也许

listView1.Items[listView1.Items.Count - 1].Selected = false;
listView1.Items[listView1.Items.Count - 1].Selected = true;

【讨论】:

【参考方案6】:

Codesleuth 对列表中最后一项调用 EnsureVisible() 的回答仅在表单 OnShown() 事件期间调用时对我有效。

我尝试在构造函数中执行此操作,我正在填充我的 ListView,但什么也没发生。但是,在 OnShown() 期间执行此操作是一种享受。

希望这会有所帮助。

【讨论】:

以上是关于更新新项目时如何在 WinForms ListView 控件中自动向下滚动?的主要内容,如果未能解决你的问题,请参考以下文章

如何在更新数据源时让绑定的 winforms 控件刷新?

如何以编程方式更新始终运行并使用 msix 部署的 WinForms 应用程序?

绑定数据更改时Winforms列表框不更新

使用 c# winforms 将数据更新/保存到 SQL 数据库表

如何从 JSON 对象返回列表?

如何动态更改winforms列表框项的字体?