C#使用Dockstyle并设置边距

Nai*_*gel 4 c# margin padding spacing winforms

我正在尝试以编程方式创建的新形式插入几个对象;基本上,我要Button在底部RichTextBox保留所有剩余空间。我将第一个设置为as Dock = DockStyle.Bottom,后一个设置为Dock = DockStyle.Filland它可以正常工作。

现在,我试图在元素之间插入一个间距,因此我在表单中添加了填充,并在按钮中添加了边距。第一个可以正常运行,但是margin不能正常运行,因此RichTextBoxand 之间没有空格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;
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Sat*_*ish 5

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);
Run Code Online (Sandbox Code Playgroud)