C#使用dockstyle和设置margin

5
我试图在程序创建的新表单中插入几个对象; 基本上我想在底部放一个 按钮,并填充所有剩余空间的 RichTextBox。我将第一个设置为 Dock = DockStyle.Bottom,而将后者设置为 Dock = DockStyle.Fill,它可以正常工作。

现在我正在尝试在元素之间插入间距,因此我在表单中添加了填充,并在按钮中添加了边距。第一个可以正常工作,但是边距不行,因此RichTextBoxButton之间没有空间。

以下是代码和输出。我错过了什么吗?
// 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;

enter image description here


你是不是没有设计师的情况下在做这个?如果是,考虑使用 SuspendLayout 然后再使用 ResumeLayout - BartoszKP
2
这是WinForms吗?如果您在问题中使用WinForms标签进行指定,那将会很有帮助。 - RenniePet
2个回答

7

在停靠控件上设置Margin属性对该控件与其容器边缘之间的距离没有影响。

阅读MSDN。使用TableLayoutPanel

如下所示

           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);

3

首先取消RTB的停靠。然后通过编程指定边界,设置RTB和按钮的位置。

然后将RTB的锚定属性设置为所有方向。即顶部、左侧、底部、右侧。

接下来,将按钮的锚定属性设置为左侧、右侧、底部。

此外,如果您想要更多的布局控制,可以使用流式布局面板或表格布局面板控件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接