C# 如果内容字符串宽度大于列表框宽度,是否将Winforms DotNet列表框项换行?

C# 如果内容字符串宽度大于列表框宽度,是否将Winforms DotNet列表框项换行?,c#,winforms,listbox,width,listboxitem,C#,Winforms,Listbox,Width,Listboxitem,嗯,嗯,这意味着一些线的尺寸应该是两行的。我的老板认为这是一个更简单的解决方案,而不是限制显示的文本以适应宽度,并且不喜欢水平滚动条>\up> 看看这个答案。它用一个包装文本的文本块覆盖列表框的模板。希望有用。为了解决您的问题,我认为您应该添加:ScrollViewer.HorizontalScrollBarVisibility=“Disabled”。找到了 要在数据绑定时显示正确的显示成员,请替换 lst.Items[e.Index].ToString() 与铸造版本的财产。所以,如果绑定源

嗯,嗯,这意味着一些线的尺寸应该是两行的。我的老板认为这是一个更简单的解决方案,而不是限制显示的文本以适应宽度,并且不喜欢水平滚动条>\up>

看看这个答案。它用一个包装文本的文本块覆盖列表框的模板。希望有用。为了解决您的问题,我认为您应该添加:ScrollViewer.HorizontalScrollBarVisibility=“Disabled”。找到了

要在数据绑定时显示正确的显示成员,请替换

lst.Items[e.Index].ToString()
与铸造版本的财产。所以,如果绑定源是类对象Car,那么

((Car)lst.Items[e.Index]).YourDisplayProperty

然后,上述函数可以适当地测量字符串并绘制它。:)

要确保绑定正确,请确保在lst_MeasureItem函数中添加check“lst.Items.Count>0”。以下是我的例子:

 if (lst.Items.Count > 0)
 {
    e.ItemHeight = (int)e.Graphics.MeasureString(lst.Items[e.Index].ToString(), lst.Font, lst.Width).Height;
 }

此后,其他一切似乎都很顺利。

谢谢,但我使用win表单:(我喜欢它。不过有一件小事。当我对自定义类进行数据绑定时,DisplayMember会被擦除,我似乎无法重置它。有什么提示吗?@BillSambrone-对不起,我不使用数据绑定,从来没有遇到过同样的问题,也不知道如何解决。@AycanYaşıt:totalyagree@Kosmos似乎
列表框
缓存了项目的高度,这很好。问题是,如果调整了<代码>列表框的大小,它不会重新计算高度!我试图以某种方式清理缓存中的项目高度,而不删除和添加,然后在<代码>调整大小<代码>,但我找不到任何方法。至少有文档记录。@diegocnascemento-我使用了<代码>列表框。刷新<代码>调整大小<中的<代码>方法de>处理程序。
((Car)lst.Items[e.Index]).YourDisplayProperty
 if (lst.Items.Count > 0)
 {
    e.ItemHeight = (int)e.Graphics.MeasureString(lst.Items[e.Index].ToString(), lst.Font, lst.Width).Height;
 }