Was ist die .NET Control.Margin Eigenschaft für?
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?
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.