2017-12-18 280 views
0

我在表單中有一個基本組合框。與其他控件(按鈕,標籤等)相比,分辨率更改時,組合框的高度不會改變。Winforms:組合框高度在分辨率更改時不調整

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()擴展所有其他控件,它爲其他控件除了組合框。我也嘗試手動更改綁定,但它沒有工作。我也嘗試改變錨和碼頭。

  1. 預期結果:組合框高度(在150%)= 42
  2. 實際結果:組合框 高度(在150%)= 28

希望得到關於如何解決這一問題的任何幫助。

回答

0

您必須設置ComboBoxfalseIntegralHeight屬性:

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

此屬性不空項工作。 – vishal