0

我知道ComboBox.Height不能轻易设置。可以用Font. 但我需要知道它的最终高度。在显示窗口和控件之前它不会更新。

我该如何计算呢?当我运行此按钮时,按钮不在组合框下方,而是在组合框后面:

// my forms must be disigned by code only (no designer is used)
public class Form1: Form
{
    public Form1()
    {
        ComboBox box = new ComboBox();
        box.Font = new Font("Comic Sans MS", 100, FontStyle.Regular);
        Controls.Add(box);

        Button button = new Button();
        button.Text = "hello world";
        button.SetBounds(box.Left, box.Bottom, 256, 32);
        button.SetBounds(box.Left, box.Height, 256, 32); // doesn't work either
        Controls.Add(button);
    }
}
4

1 回答 1

1

问题是在绘制ComboBox.Bottom之前不会更新属性以补偿字体大小。ComboBox

解决方案是在Form.Load事件而不是构造函数中动态添加控件:

private void MainForm_Load(object sender, EventArgs e)
{
    ComboBox box = new ComboBox();
    box.Font = new Font("Comic Sans MS", 100, FontStyle.Regular);
    Controls.Add(box);

    Button button = new Button();
    button.Text = "hello world";
    button.SetBounds(box.Left, box.Bottom, 256, 32); 
    Controls.Add(button);
}
于 2013-09-18T06:57:45.763 回答