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

问题描述 投票:0回答:1

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

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

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

c# winforms combobox
1个回答
0
投票

你必须将IntegralHeightComboBox属性设置为false

    comboBox1.Location = new Point(250, 33);
    comboBox1.Size = new Size(100, 21);
    comboBox1.Scale(scaleFactor);
    comboBox1.IntegralHeight = false;
© www.soinside.com 2019 - 2024. All rights reserved.