关于c#:. NET Control.Margin属性的作用是什么?

What is the .NET Control.Margin property for?

我假设C#margin属性的含义与CSS中类似-控件外部的间距。 但是,无论我输入什么值,保证金值似乎都被忽略了。

然后,我在SDK上阅读:

Setting the Margin property on a
docked control has no effect on the
distance of the control from the the
edges of its container.

考虑到我要在窗体上放置控件,或者可能将它们停靠在窗体上,Margin属性会给我带来什么?


就像Philip Rieck所说的那样,margin属性仅受执行布局的容器控件的尊重。下面的示例可以非常清楚地说明TableLayoutPanel如何尊重Margin属性:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            TableLayoutPanel pnl = new TableLayoutPanel();
            pnl.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50));
            pnl.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50));
            pnl.Dock = DockStyle.Fill;
            this.Controls.Add(pnl);

            Button btn1 = new Button();
            btn1.Text ="No margin";
            btn1.Dock = DockStyle.Fill;

            Button btn2 = new Button();
            btn2.Margin = new Padding(25);
            btn2.Text ="Margin";
            btn2.Dock = DockStyle.Fill;

            pnl.Controls.Add(btn1, 0, 0);
            pnl.Controls.Add(btn2, 1, 0);
        }
    }
}

我相信唯一尊重此属性的.NET 2.0内置控件是FlowLayoutPanelTableLayoutPanel;希望第三方组件也尊重它。在其他情况下,它基本上没有作用。


您的控制主机(例如,Panel)正在使用的任何布局引擎都会使用margin属性,而布局引擎认为合适。但是,就像您假设的那样,它最好用于间隔。只需阅读该特定布局引擎的文档即可。

例如,在使用FlowLayoutPanel或TableLayoutPanel时,可以非常方便-减少默认的填充或将内容空间缩小。显然,如果编写自定义布局提供程序,则可以使用边距,但您认为合适。


如果您不使用布局容器,而是手动放置控件,则Control.Margin属性在设计时也可能很有用。

它会影响出现对齐线的手动拖动控件之间的距离。

例如。对于文本框的默认边距值为3,您将具有以下对齐线:

enter image description here

对于10的边距-这些(两种情况下标签的边距均为3):

enter image description here

因此,如果您对UI有一些严格的指导原则,则只需根据需要设置边距,然后将控件拖动到对齐线。


推荐阅读

    linux输入命令星号?

    linux输入命令星号?,密码,网络,系统,通讯,概念,情况,数据,术语,网关,表示,如

    linux命令行输入取消?

    linux命令行输入取消?,系统,档案,命令,情况,管理,状态,信息,环境,百度,目录,L

    linux命令行输入汉字?

    linux命令行输入汉字?,系统,软件,发行,管理,终端,命令,模式,编辑,文件,文本,L

    linuxmv命令作用?

    linuxmv命令作用?,系统,文件,命令,名称,目录,文件夹,源文件,缩写,参数,目标,l

    常用的linux命令作用?

    常用的linux命令作用?,工作,系统,信息,管理,地址,时间,命令,目录,平均,项目,l

    linux命令输入格式化?

    linux命令输入格式化?,电脑,设备,系统,管理,位置,环境,名称,数据,磁盘,命令,l

    linux输入上条命令?

    linux输入上条命令?,系统,命令,工作,电脑,数字,时间,管理,工具,第一,网上,lin

    linux输入过的命令?

    linux输入过的命令?,系统,地址,数字,命令,工具,工作,环境,界面,历史,指令,lin

    linux输入命令的地方?

    linux输入命令的地方?,系统,管理,单位,地址,地方,密码,命令,位置,发行,权威,l

    linux输入过的命令?

    linux输入过的命令?,系统,地址,数字,命令,工具,工作,环境,界面,历史,指令,lin

    linux输入上条命令?

    linux输入上条命令?,系统,命令,工作,电脑,数字,时间,管理,工具,第一,网上,lin

    linux输入命令的地方?

    linux输入命令的地方?,系统,管理,单位,地址,地方,密码,命令,位置,发行,权威,l

    linux命令输入格式化?

    linux命令输入格式化?,电脑,设备,系统,管理,位置,环境,名称,数据,磁盘,命令,l

    linux命令输入在那?

    linux命令输入在那?,系统,工具,电脑,命令,终端,发行,工作,管理,密码,下面,lin

    linux移动命令作用?

    linux移动命令作用?,系统,名称,文件,位置,软件,电脑,目录,命令,信息,不了,lin

    linux命令ln作用?

    linux命令ln作用?,链接,对数,系统,概念,地方,位置,文件,自然,命令,节点,“LN

    linux下id命令作用?

    linux下id命令作用?,系统,信息,密码,地址,工具,时间,用户,命令,文件,用户名,L

    linux输入文本命令?

    linux输入文本命令?,系统,位置,电脑,工作,首开,命令,终端,模式,指令,字符,如

    linux输入命令的窗口?

    linux输入命令的窗口?,系统,电脑,工具,首页,命令,终端,工作,第三,分行,第一,l