2008-09-16 9 views
10

Я предположил, что свойство поля C# имеет такое же значение, как и в CSS, - расстояние между элементами управления. Но значения маржи, похоже, игнорируются, чтобы учитывать, какие значения я вводил.Что такое свойство .NET Control.Margin?

Затем я прочитал на SDK:

не Установка свойства Margin на пристыкован управления имеет никакого влияния на расстоянии управления от самых краев контейнера.

Учитывая, что я размещаю элементы управления на формах и, возможно, стыкую их, что дает мне свойство Margin?

ответ

5

Свойство margin используется любым механизмом компоновки, которым управляет управляющий хост (например, Panel), каким бы манером он ни выглядел. Однако он лучше всего подходит для интервалов так же, как вы предполагаете. Просто прочитайте документацию для этого конкретного механизма компоновки.

Это может быть очень удобно при использовании FlowLayoutPanel или TableLayoutPanel, например, - либо немного уменьшить размер заполнения или пробела по умолчанию. Очевидно, что если вы пишете собственный поставщик компоновки, вы можете использовать Margin, как вы считаете нужным.

8

Как и Филипп Рик, свойство margin соблюдает только элементы управления контейнерами, которые выполняют компоновку. Вот пример того, что делает это довольно ясно, как 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; надеюсь, сторонние компоненты также уважают его. Это не имеет никакого эффекта в других сценариях.

0

Свойство Control.Margin также может быть полезно во время разработки, если вы не используете макет контейнера, а скорее устанавливаете элементы управления вручную.

Он влияет на расстояние между ручными элементами управления, на которых snaplines appear.

E.g. для значения поля по умолчанию 3 для текстового поля вы бы это snaplines:

enter image description here

И для края 10 - это (метка имеет запас 3 в обоих случаях):

enter image description here

Итак, если у вас есть какие-то строгие правила для вас, вы просто устанавливаете поля, как вам нужно, и перетащите элементы управления в привязки.

 Смежные вопросы

  • Нет связанных вопросов^_^