Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 组合框宽度取决于最长的项目_C#_Combobox - Fatal编程技术网

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的“向下箭头按钮”,所以您必须这样做。在这种情况下,框的宽度可以通过从控件的宽度中减去客户端宽度来确定。