Frage

ging ich davon aus, dass die C # Eigenschaft margin eine Bedeutung hatte wie in CSS - den Abstand um die Außenseite der Steuerung. Aber Margin scheinen Werte ignoriert werden, um Rolle, welche Werte ich eingeben.

Dann las ich auf dem SDK:

  

Zur Einstellung der Margin-Eigenschaft auf einem   dockt Kontrolle hat keine Auswirkungen auf die   Abstand der Steuerung von dem der   Kanten des Containers.

Da ich Steuerelemente auf Formularen bin platzieren und sie vielleicht Andocken, was bedeutet die Margin-Eigenschaft mir bekommen?

War es hilfreich?

Lösung

Die Marge Eigenschaft wird durch eine beliebige von Layout-Engine Ihre Steuerungshost (Das Bedienfeld, zum Beispiel) verwendet, in welcher Weise auch immer verwendet, dass Layout-Engine für richtig hält. Es ist jedoch am besten für Abstand wie Sie annehmen. Lesen Sie die Dokumentation für das jeweilige Layout-Engine.

Es kann sehr nützlich sein, wenn ein oder Flowlayoutpanel Table, beispielsweise mit - entweder den Standard-Polsterung oder Raum der Dinge ein wenig reduzieren werden. Natürlich, wenn Sie einen benutzerdefinierten Layout-Anbieter schreiben, können Sie Margin verwenden aber Sie sehen, passen.

Andere Tipps

Wie Philip Rieck sagte, wird die Eigenschaft margin nur durch Container-Steuerelemente eingehalten, die das Layout durchführen. Hier ist ein Beispiel, das es ziemlich klar macht, wie die TableLayoutPanel die Margin-Eigenschaft respektiert:

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

Ich glaube, die nur .NET 2.0 integrierten Steuerelemente, die diese Eigenschaft ist FlowLayoutPanel und TableLayoutPanel respektieren; hoffentlich Komponenten von Drittanbietern respektieren sie auch. Es hat im Grunde keine Auswirkungen in anderen Szenarien.

Control.Margin Eigenschaft könnte zur Entwurfszeit auch nützlich sein, wenn Sie nicht über die Layout-Container verwenden, sondern steuert manuell setzen.

Es beeinflusst den Abstand zwischen manuell steuert, an dem gezogen Ausrichtungslinien erscheinen .

z. für Standard-Randwert von 3 für Textfeld würden Sie diese Ausrichtungslinien haben:

Für eine Marge von 10 - dieses (Label hat Marge von 3 in beiden Fällen):

Also, wenn Sie einige strenge Richtlinien haben für Sie dann UI setzen Sie nur die Ränder, wie Sie benötigen und ziehen Kontrollen auf die Ausrichtungslinien.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top