首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET Control.Margin属性用于什么?

.NET Control.Margin属性用于什么?
EN

Stack Overflow用户
提问于 2008-09-16 19:03:49
回答 3查看 14K关注 0票数 11

我假设C#边距属性的含义类似于CSS --控件外部的间距。但是保证金值似乎被忽略了,不管我输入了什么值。

然后我在SDK上读到:

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

考虑到我正在对表单设置控件,并可能将其停靠,那么保证金属性会给我带来什么呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-09-16 19:10:11

按照布局引擎认为合适的任何方式,您的控制主机(例如Panel)使用的任何布局引擎都会使用边距属性。然而,它是最好使用的间隔,正如您所假设的。只需阅读该特定布局引擎的文档即可。

例如,在使用FlowLayoutPanel或TableLayoutPanel时,可以非常方便地减少默认的填充量,或者稍微减少一些空间。显然,如果您编写自定义布局提供程序,您可以使用边距,无论您认为合适。

票数 5
EN

Stack Overflow用户

发布于 2008-09-16 19:17:45

就像Philip所说的,只有执行布局的容器控件才会尊重保证金属性。下面的一个示例非常清楚地说明了TableLayoutPanel是如何尊重保证金属性的:

代码语言:javascript
复制
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;希望第三方组件也尊重它。在其他情况下,它基本上没有任何影响。

票数 9
EN

Stack Overflow用户

发布于 2017-11-30 08:42:24

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

它影响手动拖动控件( snaplines appear )之间的距离。

例如,对于文本框的默认页边距值为3,您可以使用以下处理方式:

而对于10

因此,如果您对UI有一些严格的指导原则,那么您只需根据需要设置页边距,并将控件拖到对线上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/75777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档