C# 学习笔记(16)ComboBox下拉列表框宽度自适应

Posted 不咸不要钱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 学习笔记(16)ComboBox下拉列表框宽度自适应相关的知识,希望对你有一定的参考价值。

C# 学习笔记(16)ComboBox下拉列表框宽度自适应

当下拉列表框中内容宽度大于下拉列表框宽度时
在这里插入图片描述
下拉列表框不能将内容全部显示出来
在这里插入图片描述

可以在下拉时,对下拉列表框内容进行重绘
在这里插入图片描述

        /// <summary>
        /// 列表项下拉窗口宽度自适应
        /// </summary>
        /// <param name="comboBox"></param>
        private void AdjustComboBoxDropDownListWidth(object comboBox)
        {
            Graphics g = null;
            Font font = null;
            try
            {
                ComboBox senderComboBox = null;
                if (comboBox is ComboBox)
                    senderComboBox = (ComboBox)comboBox;
                else if (comboBox is ToolStripComboBox)
                    senderComboBox = ((ToolStripComboBox)comboBox).ComboBox;
                else
                    return;

                int width = senderComboBox.Width;
                g = senderComboBox.CreateGraphics();
                font = senderComboBox.Font;

                //checks if a scrollbar will be displayed.
                //If yes, then get its width to adjust the size of the drop down list.
                int vertScrollBarWidth =
                    (senderComboBox.Items.Count > senderComboBox.MaxDropDownItems)
                    ? SystemInformation.VerticalScrollBarWidth : 0;

                int newWidth;
                foreach (object s in senderComboBox.Items)  //Loop through list items and check size of each items.
                {
                    if (s != null)
                    {
                        newWidth = (int)g.MeasureString(s.ToString().Trim(), font).Width
                            + vertScrollBarWidth;
                        if (width < newWidth)
                            width = newWidth;   //set the width of the drop down list to the width of the largest item.
                    }
                }
                senderComboBox.DropDownWidth = width;
            }
            catch
            { }
            finally
            {
                if (g != null)
                    g.Dispose();
            }
        }
        private void comboBox1_DropDown(object sender, EventArgs e)
        {
            AdjustComboBoxDropDownListWidth(comboBox1);
        }

以上是关于C# 学习笔记(16)ComboBox下拉列表框宽度自适应的主要内容,如果未能解决你的问题,请参考以下文章

C# 重写ComboBox实现下拉任意组件

题目要求是在c#中的combobox控件的下拉列表中添加图片。我有代码,可是有错误,图片添加部分不

c#的combobox自动隐藏下拉列表的问题

C#中combobox如何实现模糊查询,并能自动显示下拉列表

C# Winform自定义一个控件,一个按钮按下会显示ComboBox一样的下拉列表

C#使用 ComboBox 控件