在列表框中,如何获取列表框的宽度减去滚动条占用的空间?

Isa*_*ger 5 listbox winforms

我有一个列表框,可能包含比它更宽的字符串.我现在懒得编写调整大小代码,因此我显示的工具提示显示整个项目,如果它太大而无法放入列表框中.

现在,我使用Width属性获取宽度,并将其MeasureText与字符串和字体作为参数的结果进行比较.

这在大多数情况下都可以正常工作,但是如果项目在没有滚动条的情况下适合列表框但是不适合带有滚动条的稍微更薄的列表框,则它不起作用.

那么,我该如何找到:

  1. 如果列表框显示滚动条
  2. 列表框的宽度不包括滚动条

如果滚动条占用相同的像素宽度,无论Windows版本或显示器配置正在运行,我想2会得到解决.有谁知道这是真的吗?

Lar*_*ech 5

您可以使用ListBox.ClientRectangle.Width来获取控件使用的内部空间.

如果ScrollBar可见,则返回的宽度值将是内部宽度减去ScrollBar宽度,因此您可以安全地对其进行测量.