문제

나는 C# 여백 속성이 CSS와 같은 의미(컨트롤 외부 주위의 간격)를 가지고 있다고 가정했습니다.하지만 Margin 값은 내가 입력한 값에 관계없이 무시되는 것 같습니다.

그런 다음 SDK에서 다음을 읽었습니다.

도킹 된 컨트롤에 여백 속성을 설정하면 컨테이너의 가장자리에서 컨트롤의 거리에 영향을 미치지 않습니다.

양식에 컨트롤을 배치하고 도킹하는 경우 Margin 속성을 통해 무엇을 얻을 수 있습니까?

도움이 되었습니까?

해결책

여백 속성은 제어 호스트(예: 패널)가 사용하는 모든 레이아웃 엔진에서 해당 레이아웃 엔진이 적합하다고 판단하는 방식으로 사용됩니다.그러나 가정한 대로 간격을 두는 데 가장 적합합니다.해당 특정 레이아웃 엔진에 대한 문서를 읽어보세요.

예를 들어 FlowLayoutPanel 또는 TableLayoutPanel을 사용할 때 기본 패딩을 줄이거나 공간을 약간 확보하는 데 매우 유용할 수 있습니다.분명히, 사용자 정의 레이아웃 공급자를 작성하는 경우 적합하다고 판단되는 대로 Margin을 사용할 수 있습니다.

다른 팁

Philip Rieck이 말했듯이 여백 속성은 레이아웃을 수행하는 컨테이너 컨트롤에서만 존중됩니다.다음은 TableLayoutPanel Margin 속성을 존중합니다.

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 내장 컨트롤은 다음과 같습니다. FlowLayoutPanel 그리고 TableLayoutPanel;제3자 구성요소도 이를 존중하기를 바랍니다.기본적으로 다른 시나리오에서는 효과가 없습니다.

Control.Margin 속성은 레이아웃 컨테이너를 사용하지 않고 컨트롤을 수동으로 배치하는 경우 디자인 타임에 유용할 수도 있습니다.

이는 수동으로 드래그한 컨트롤 사이의 거리에 영향을 미칩니다. 맞춤선이 나타납니다..

예:텍스트 상자의 기본 여백 값이 3인 경우 맞춤선은 다음과 같습니다.

enter image description here

그리고 여백이 10인 경우 다음과 같습니다(두 경우 모두 레이블의 여백은 3입니다).

enter image description here

따라서 UI에 대한 몇 가지 엄격한 지침이 있는 경우 필요에 따라 여백을 설정하고 컨트롤을 맞춤선으로 드래그하면 됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top