我正在尝试以编程方式创建的新形式插入几个对象;基本上,我要Button
在底部RichTextBox
保留所有剩余空间。我将第一个设置为as Dock = DockStyle.Bottom
,后一个设置为Dock = DockStyle.Fill
and它可以正常工作。
现在,我试图在元素之间插入一个间距,因此我在表单中添加了填充,并在按钮中添加了边距。第一个可以正常运行,但是margin不能正常运行,因此RichTextBox
and 之间没有空格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
在停靠控件上设置属性不会影响控件与其容器边缘之间的距离。
阅读MSDN。使用Table layout panel
像这样
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);