我在做 Windows 项目时遇到了一个问题。认为你们可以帮助我找到一些解决方法。
问题 - 我在包含可变长度项目列表的表单上有下拉菜单。有时文本的宽度超过下拉菜单的宽度并且文本被截断。我想想出一种方法来显示全文。我尝试包含工具提示,当下拉菜单展开时它工作正常,但当下拉状态折叠时工具提示被隐藏。我想以工具提示或其他方式显示下拉列表中所选项目的全文。
感谢您的帮助。
方法有很多种,
1)最明显的一个使组合框更大
2)像现在一样使用工具提示,但将其扩展到组合框鼠标悬停事件
3)创建一个具有所需长度和高度的标签(标签也可以换行)。使用 Combobox MouseHover、MouseLeave、DropDown 事件来使用所需的文本来操纵标签,并使用标签可见属性根据需要显示和隐藏。
除了在工具提示上使用标签,您将拥有更多的功能和灵活性。
试试这个:
private SizeF GetMaxSize(List<string> items)
{
Graphics g = CreateGraphics();
SizeF size;
SizeF oldSize = new Size(0f,0f);
foreach(string item in items)
{
size = g.MeasureString(item, myComboBox.Font);
if (size.Width > oldSize.Width) {
oldSize.Width = size.Width
oldSize.Height = size.Height
}
}
return oldSize;
}
只需将List<T>
您将在组合框中填充的所有字符串的集合传递给它,它就会找到字符串中的最大宽度。然后,您可以相应地调整组合框的宽度。myComboBox.Width = GetMaxSize().Width