Question

J'ai supposé que la propriété de marge C # avait une signification similaire à celle de CSS: l'espacement autour du contrôle. Mais les valeurs de marge semblent être ignorées, peu importe les valeurs que j'entre.

Ensuite, j'ai lu sur le SDK:

  

Définition de la propriété Margin sur un   Le contrôle ancré n’a aucun effet sur la   distance du contrôle de la   bords de son conteneur.

Étant donné que je mets en place des contrôles sur les formulaires et que je les ancre peut-être, qu'est-ce que la propriété Margin me permet d'obtenir?

Était-ce utile?

La solution

La propriété margin est utilisée par le moteur de présentation utilisé par votre hôte de contrôle (Panel, par exemple), quelle que soit la méthode choisie par le moteur de présentation. Cependant, il est préférable d’utiliser l’espacement comme vous le supposez. Il suffit de lire la documentation de ce moteur de présentation spécifique.

Cela peut s'avérer très pratique lorsque vous utilisez un FlowLayoutPanel ou un TableLayoutPanel, par exemple, pour réduire le remplissage par défaut ou pour espacer un peu l'espace. Évidemment, si vous écrivez un fournisseur de disposition personnalisé, vous pouvez utiliser la marge comme bon vous semble.

Autres conseils

Comme Philip Rieck l'a dit, la propriété margin n'est respectée que par les contrôles de conteneur effectuant la présentation. Voici un exemple qui montre clairement comment TableLayoutPanel respecte la propriété 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);
        }
    }
}

Je crois que les seuls contrôles intégrés .NET 2.0 qui respectent cette propriété sont FlowLayoutPanel et TableLayoutPanel ; Espérons que les composants tiers le respectent également. Il n'a fondamentalement aucun effet dans d'autres scénarios.

La propriété Control.Margin peut également être utile au moment de la conception si vous n'utilisez pas le conteneur de présentation, mais placez les contrôles manuellement.

Cela affecte la distance entre les contrôles manuellement glissés auxquels snaplines apparaissent .

E.g. pour la valeur de marge par défaut de 3 pour la zone de texte, vous obtiendrez ces lignes de scénario:

 entrer la description de l'image ici

Et pour une marge de 10 - celles-ci (l’étiquette a une marge de 3 dans les deux cas):

 entrer la description de l'image ici

Donc, si vous avez des directives strictes pour votre interface utilisateur, il vous suffit de définir les marges selon vos besoins et de faire glisser les contrôles vers les lignes de scénario.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top