我正在尝试以编程方式创建的新表单中插入几个对象;基本上我想要一个底部的Button和一个RichTextBox填充所有剩余的空间.我将第一个设置为Dock = DockStyle.Bottom,后者设置为Dock = DockStyle.Fill并且它可以工作.
现在我试图在元素之间插入一个间距,所以我在表单中添加了一个填充,并在按钮中添加了一个边距.第一个工作正常,但边距不正确,因此RichTextBox和Button之间没有空格.
这是代码和输出.我错过了什么吗?
// Parent Form
SMSForm.Padding = new Padding(5);
// TextBox
RichTextBox SMStext = new RichTextBox();
SMSForm.Controls.Add(SMStext);
SMStext.Dock = DockStyle.Fill;
// Button
Button SMSsend = new Button();
SMSsend.Text = "Send SMS to ";
SMSForm.Controls.Add(SMSsend);
SMSsend.Margin = new Padding(10);
SMSsend.Dock = DockStyle.Bottom;
解决方法:
在停靠控件上设置Margin属性不会影响控件与其容器边缘的距离.
Read MSDN.使用表格布局面板
像这样
RichTextBox SMStext = new RichTextBox();
TableLayoutPanel pnl1 = new TableLayoutPanel();
pnl1.RowStyles.Clear();
pnl1.ColumnStyles.Clear();
pnl1.RowCount += 2;
pnl1.ColumnCount += 1;
pnl1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100.0F));
pnl1.RowStyles.Add(new RowStyle(SizeType.Percent,80.0F));
pnl1.RowStyles.Add(new RowStyle(SizeType.Percent,20.0F));
pnl1.Controls.Add(SMStext,0,0);
SMStext.Dock = DockStyle.Fill;
Button SMSsend = new Button();
SMSsend.Text = "Send SMS to ";
this.Controls.Add(pnl1);
pnl1.Dock = DockStyle.Fill;
pnl1.Controls.Add(SMSsend,0,1);
SMSsend.Dock = DockStyle.Fill;
SMSsend.Margin = new Padding(10);