Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#使用dockstyle和设置边距_C#_Winforms_Margin_Padding_Spacing - Fatal编程技术网

C#使用dockstyle和设置边距

C#使用dockstyle和设置边距,c#,winforms,margin,padding,spacing,C#,Winforms,Margin,Padding,Spacing,我试图以编程方式创建的新形式插入两个对象;基本上,我希望底部有一个按钮,剩余的空间都有一个RichTextBox填充。我将第一个设置为Dock=DockStyle.Bottom,将后一个设置为Dock=DockStyle.Fill,它就工作了 现在我尝试在元素之间插入一个空格,所以我在表单中添加了一个填充,在按钮中添加了一个边距。第一个选项正确,但边距不正确,因此RichTextBox和按钮之间没有空格 下面是代码和输出。我错过什么了吗 // Parent Form SMSForm.Paddin

我试图以编程方式创建的新形式插入两个对象;基本上,我希望底部有一个
按钮
,剩余的空间都有一个
RichTextBox
填充。我将第一个设置为
Dock=DockStyle.Bottom
,将后一个设置为
Dock=DockStyle.Fill
,它就工作了

现在我尝试在元素之间插入一个空格,所以我在表单中添加了一个填充,在按钮中添加了一个边距。第一个选项正确,但边距不正确,因此
RichTextBox
按钮之间没有空格

下面是代码和输出。我错过什么了吗

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

首先松开RTB。然后根据需要设置RTB和按钮的位置(通过编程指定边界)

然后将RTB的锚属性设置为“所有边”。i、 e.左上右下

然后将按钮锚定设置到左右底部


此外,如果您希望更多地控制布局,可以使用“流程布局”面板或“表格布局”面板控件。

在停靠控件上设置
Margin
属性不会影响控件与其容器边缘之间的距离

。使用
表格布局面板

像这样

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

你在没有设计师的情况下这么做?如果是,请考虑使用和<代码> RealelayOuts<代码> >这是WiFrm?如果您在问题上使用WinForms标记来指定这一点,这将非常有用。