2

我在做 Windows 项目时遇到了一个问题。认为你们可以帮助我找到一些解决方法。

问题 - 我在包含可变长度项目列表的表单上有下拉菜单。有时文本的宽度超过下拉菜单的宽度并且文本被截断。我想想出一种方法来显示全文。我尝试包含工具提示,当下拉菜单展开时它工作正常,但当下拉状态折叠时工具提示被隐藏。我想以工具提示或其他方式显示下拉列表中所选项目的全文。

感谢您的帮助。

4

2 回答 2

2

方法有很多种,

1)最明显的一个使组合框更大

2)像现在一样使用工具提示,但将其扩展到组合框鼠标悬停事件

3)创建一个具有所需长度和高度的标签(标签也可以换行)。使用 Combobox MouseHover、MouseLeave、DropDown 事件来使用所需的文本来操纵标签,并使用标签可见属性根据需要显示和隐藏。

除了在工具提示上使用标签,您将拥有更多的功能和灵活性。

于 2013-03-28T15:25:34.920 回答
1

试试这个:

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

于 2013-03-28T15:37:26.237 回答