c# - 如何判断水平滚动条是否显示在列表框上

标签 c# listbox

我正在将项目添加到 C# 列表框中,并希望始终将其滚动到添加到列表中的最后一个项目,以便它可见。该列表通常会超出可用空间,因此会显示垂直滚动条,并且当​​用户可以移动它时,我需要用新项目强制它再次跳到末尾。我发现的唯一有用的方法是将 TopIndex 属性与框中的行一起使用 - 可以显示的行数。我可以使用下面的代码正常工作,除非其中一行太长,在这种情况下,水平滚动条会占用大约最后 2 个项目的空间。如果我能弄清楚是否显示了水平条,我可以更改计算中的行数来解决它。

        LB1.Items.Add(strText);
        LB1.TopIndex = Math.Max(0,lbXmlMsg.Items.Count - 10); // 10 rows visible

这似乎只是确保新项目可见的大量工作。我在这里遗漏了一些明显的东西吗?

最佳答案

您可以通过调用检查水平滚动条是否可见

LB1.HorizontalScrollbar

<罢工> 根据 OP 的评论,以上内容无效。

我还要说硬编码数字是不好的做法,你可以这样做: How to scroll to bottom of ListBox?

然后这是一种自动滚动的方式 http://www.csharp-examples.net/autoscroll/

我还没有尝试过这些,但它们应该有效。

如果你切换到 ListView,它有一个 EnsureVisible完全可以完成您想要的工作的功能。

关于c# - 如何判断水平滚动条是否显示在列表框上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17913007/

相关文章:

c# - 无法使用 PhantomJs(和 Selenium WebDriver)上传文件

c# - 如何在 C# winforms 中使用 Microsoft Excel 作为 Grid 控件?

c# - 无法清除 Winforms-ListBox

c# - 在列表框中添加/删除项目的事件 c#.NET

delphi - 如何制作与 Outlook 2013 相同的列表框?

C# 相当于 C const char**

c# - 如何降低GetHashCode的复杂度

c# - 为什么将 MemberInfo.GetCustomAttributes(Type) 定义为返回属性数组?

javascript - 根据列表框选择的数量更新 TextArea 值

javascript - 如何使用 jQuery/JS 将列表框滚动到顶部