C# 组合框宽度取决于最长的项目
我有一个动态生成的组合框,并用一些项目填充。我想将此控件的宽度设置为最长项目的宽度。如何计算某些文本的显示宽度C# 组合框宽度取决于最长的项目,c#,combobox,C#,Combobox,我有一个动态生成的组合框,并用一些项目填充。我想将此控件的宽度设置为最长项目的宽度。如何计算某些文本的显示宽度 编辑:我正在使用windows窗体,但我也希望在asp.net中使用它。您使用的是ASP.NET、Windows窗体还是WPF?您使用的是固定宽度字体还是比例字体 如果您使用的是Windows窗体,则需要调用以了解文本的宽度 如果您使用的是ASP.NET,则可以执行MeasureString()之类的操作,但您不知道浏览器上呈现的是什么字体,因此不能将其直接放入脚本中。视情况而定。您使
编辑:我正在使用windows窗体,但我也希望在asp.net中使用它。您使用的是ASP.NET、Windows窗体还是WPF?您使用的是固定宽度字体还是比例字体 如果您使用的是Windows窗体,则需要调用以了解文本的宽度
如果您使用的是ASP.NET,则可以执行MeasureString()之类的操作,但您不知道浏览器上呈现的是什么字体,因此不能将其直接放入脚本中。视情况而定。您使用的是ASP.NET、Windows窗体还是WPF?您使用的是固定宽度字体还是比例字体 如果您使用的是Windows窗体,则需要调用以了解文本的宽度
如果您使用的是ASP.NET,您可以执行类似MeasureString()的操作,但您不知道浏览器上呈现的是什么字体,因此您不能将其放入脚本中。请参阅Graphics.MeasureString方法。
参见图形。测量方法。
如果不明确设置宽度,浏览器将显示最长项目的长度(当然,如果问题是关于web表单的)。如果不明确设置宽度,浏览器将显示最长项目的长度(当然,如果问题是关于web表单的).使用以下代码向组合框添加下拉事件:
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;
}
private void组合框下拉列表(对象发送方,事件参数e)
{
Graphics g=(发送者作为组合框).CreateGraphics();
浮动最长=0;
对于(int i=0;i<(发件人作为组合框)。Items.Count;i++)
{
SizeF textLength=g.MeasureString((发件人作为组合框).Items[i].ToString(),(发件人作为组合框).Font);
如果(textLength.Width>最长)
最长=文本长度。宽度;
}
如果(最长>0)
(发送方作为组合框)。DropDownWidth=(int)最长;
}
使用以下代码向组合框添加下拉事件:
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;
}
private void组合框下拉列表(对象发送方,事件参数e)
{
Graphics g=(发送者作为组合框).CreateGraphics();
浮动最长=0;
对于(int i=0;i<(发件人作为组合框)。Items.Count;i++)
{
SizeF textLength=g.MeasureString((发件人作为组合框).Items[i].ToString(),(发件人作为组合框).Font);
如果(textLength.Width>最长)
最长=文本长度。宽度;
}
如果(最长>0)
(发送方作为组合框)。DropDownWidth=(int)最长;
}
请说明问题所属的环境(例如Windows窗体与ASP.NET)。请说明问题所属的环境(例如Windows窗体与ASP.NET).我实际上希望有一种方法可以自动为combobox执行此操作-measureString测量字符串的长度,但当然没有考虑combobox的“向下箭头按钮”,所以您必须这样做。在这种情况下,框的宽度可以通过从控件的宽度中减去客户端宽度来确定。我实际上希望有一种方法可以自动为combobox执行此操作-measureString测量字符串的长度,但当然没有考虑combobox的“向下箭头按钮”,所以您必须这样做。在这种情况下,框的宽度可以通过从控件的宽度中减去客户端宽度来确定。