Winforms:更改分辨率时,ComboBox高度不会调整大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Winforms:更改分辨率时,ComboBox高度不会调整大小相关的知识,希望对你有一定的参考价值。

我有一个基本的组合框形式。与其他控件(按钮,标签等)相比,组合框的高度在更改分辨率时不会改变。

public partial class Form1 : Form
{
    string result;
    string fontInformation;

    private bool scaleFactorKnown = false;
    private SizeF scaleFactor;
    public Form1()
    {
        SizeChanged += Form1_SizeChanged;
        InitializeComponent();

        label1.Location = new Point(12, 36);
        label1.Size = new Size(100, 21);
        label1.Scale(scaleFactor);

        // 
        // textBox1
        // 
        textBox1.Location = new Point(133, 33);
        textBox1.Size = new Size(100, 21);
        textBox1.Scale(scaleFactor);

        // 
        // comboBox1
        // 

        comboBox1.Location = new Point(250, 33);
        comboBox1.Size = new Size(100, 21);
        comboBox1.Scale(scaleFactor);
        // button1
        // 
        button1.Location = new Point(365, 32);
        button1.Size = new Size(100, 21);
        button1.Scale(scaleFactor);
        // 
        // radioButton1
        // 

        radioButton1.Location = new Point(480, 32);
        radioButton1.Size = new Size(100, 21);
        radioButton1.Scale(scaleFactor);
        // 
        // checkBox1
        // 
        checkBox1.Location = new Point(586, 33);
        checkBox1.Size = new Size(100, 21);
        checkBox1.Scale(scaleFactor);
        // 
        // textBox2
        // 

        textBox2.Location = new Point(26, 102);
        textBox2.Size = new Size(660, 250);
        textBox2.Scale(scaleFactor);

    }

   private void Form1_SizeChanged(object sender, EventArgs e)
    {
        if (!scaleFactorKnown)
        {
            scaleFactor = AutoScaleFactor;
            scaleFactorKnown = true;
        }
        Size controlSize = new Size((int)(comboBox1.Width * scaleFactor.Width),
           (int)(comboBox1.Height * scaleFactor.Height)); //use for sizing


        //set bounds
        comboBox1.Bounds = new Rectangle(comboBox1.Location, controlSize);

    }
}

我已经尝试使用Scale()方法来缩放所有其他控件,它适用于除combobox之外的其他控件。我也尝试手动更改绑定但它不起作用。我也试过改变锚和码头。

  1. 预期结果:Combobox高度(150%)= 42
  2. 实际结果:组合箱高度(150%)= 28

非常感谢有关如何解决此问题的任何帮助。

答案

你必须将IntegralHeightComboBox属性设置为false

    comboBox1.Location = new Point(250, 33);
    comboBox1.Size = new Size(100, 21);
    comboBox1.Scale(scaleFactor);
    comboBox1.IntegralHeight = false;

以上是关于Winforms:更改分辨率时,ComboBox高度不会调整大小的主要内容,如果未能解决你的问题,请参考以下文章

检测何时在 Winforms 上单击 ComboBox

winforms DataGridViewComboBoxColumn,设置 DataPropertyName 时 ComboBox 不可点击

有没有一种简单的方法可以在 WinForms 中实现 Checked Combobox [重复]

WinForms ComboBox DropDown 和 Autocomplete 窗口都出现

如何在 WinForms 的 ComboBox 中居中对齐所选项目?

C# - Winforms - Combobox - 避免选择更新数据源的第一项