我正在将项目添加到 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/