1

我有一个动态生成并填充一些项目的组合框。我想将此控件的宽度设置为最长项目的宽度。如何计算某些文本的显示宽度?

编辑:我正在使用 Windows 窗体,但我也想在 asp.net 中这样做

4

4 回答 4

2

依靠。您使用的是 ASP.NET 还是 Windows 窗体或 WPF?您使用的是固定宽度还是比例字体?

如果您使用的是 Windows 窗体,您将需要调用MeasureString()以了解您希望文本的宽度。

如果您使用的是 ASP.NET,则可以执行 MeasureString() 之类的操作,但您不知道浏览器上正在呈现什么字体,因此您不能只将其放入脚本中。

于 2008-12-21T16:00:02.487 回答
1

请参阅Graphics.MeasureString方法。 http://msdn.microsoft.com/en-us/library/9bt8ty58.aspx

于 2008-12-21T16:00:17.853 回答
1

如果您没有明确设置宽度,浏览器会将其呈现为最长项目的长度(当然,如果问题是关于 Web 表单的)。

于 2008-12-21T16:04:36.300 回答
0

使用以下代码将 DropDown 事件添加到您的组合框:

private void comboBox_DropDown(object sender, EventArgs e)
        {
            Graphics g = (sender as ComboBox).CreateGraphics();
            float longest = 0;
            for (int i = 0; i < (sender as ComboBox).Items.Count; i++)
            {
                SizeF textLength = g.MeasureString((sender as ComboBox).Items[i].ToString(), (sender as ComboBox).Font);

                if (textLength.Width > longest)
                    longest = textLength.Width;
            }

            if (longest > 0)
                (sender as ComboBox).DropDownWidth = (int)longest;
        }
于 2019-04-07T11:11:54.920 回答