我知道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);
}
}
答案 0 :(得分: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);
}