使用Click事件添加项目时,ComboBox.MaxDopDownItems不起作用

Rye*_*Rye 8 c# combobox onclick winforms

我使用Click事件使用列表填充ComboBox项.当它已经填充时,MaxDropDownItems不起作用.有谁知道如何解决这个问题?

这是代码:

    List<string> list = new List<string>();
    ComboBox cb;
    private void button1_Click(object sender, EventArgs e)
    {
       cb = new ComboBox();

        cb.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
        cb.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
        cb.FormattingEnabled = true;
        cb.Size = new System.Drawing.Size(94, 21);
        cb.MaxDropDownItems = 5;
        cb.Click +=new EventHandler(cb_Click);

        this.Controls.Add(cb);
    }

    private void cb_Click(object sender, EventArgs e) 
    {
        foreach (string str in list)
        {
            cb.Items.Add(str);
        }
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        list.Add("1");list.Add("2");list.Add("3");
        list.Add("4");list.Add("5");list.Add("6");
        list.Add("7");
    }
Run Code Online (Sandbox Code Playgroud)

MaxDropDownItems设置为5,因此组合框应该至少显示5个项目: 替代文字

Ahm*_*eed 23

您需要将设置ComboBox.IntegralHeight属性false当你设置你的控制(默认为true).来自MSDN:

当此属性设置为true时,控件会自动调整大小以确保不会部分显示项目.如果要根据表单的空间要求维护ComboBox的原始大小,请将此属性设置为false.

在将组合框添加到Controls集合之前添加此行:

cb.IntegralHeight = false;
Run Code Online (Sandbox Code Playgroud)

  • 哇!当 IntegralHeight 为 true 时,MaxDropDownItems 似乎根本不起作用。我不明白这其中有什么关系。我的组合框从占据整个屏幕,到正确限制为 8 个项目......?这一定是 .NET bug...在 .NET 4.8 VS 2022 中看到 (2认同)