我有一个动态生成的ComboBox并填充了一些项目。我想将此控件的宽度设置为最长项的宽度。我如何计算某些文字的显示宽度?
编辑:我正在使用Windows窗体,但我想在asp.net中也这样做
答案 0 :(得分:2)
取决于。您使用的是ASP.NET或Windows窗体还是WPF?您使用的是固定宽度还是比例字体?
如果您使用的是Windows窗体,则需要调用MeasureString()以了解文本的宽度。
如果您正在使用ASP.NET,您可以执行类似MeasureString()的操作,但您不确切知道在浏览器上呈现的字体是什么,因此您不能将其放在脚本中。< / p>
答案 1 :(得分:1)
请参阅 Graphics.MeasureString 方法。 http://msdn.microsoft.com/en-us/library/9bt8ty58.aspx
答案 2 :(得分:1)
如果您没有明确设置宽度,浏览器会将其渲染为最长项目的长度(如果问题是关于Web表单的话,当然)。
答案 3 :(得分: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;
}