Главная » C#, Компоненты » Правила изменения размера и положения компонента

0

Дизайнер компонента позволяет редактировать его положение и размеры, причем каждый компонент сам определяет, какие именно параметры доступны для редактирования. По умолчанию визуальный компонент позволяет изменять размеры как по горизонтали, так и по вертикали, но распространять такое поведение на все компоненты было бы не совсем корректно. Например, для компонента, являющегося разделительной линией (bevel), правильнее было бы запретить менять вертикальный размер, если это горизонтальная разделительная линия. И, наоборот, запретить менять горизонтальный размер для вертикального разделителя.

С точки зрения кода правилами изменения размера и положения управляет свойство SelectionRules класса ControlDesigner. Для изменения поведения достаточно перекрыть это свойство и возвращать тот набор правил, который согласуется с видом и свойствами компонента:

public class BevelLineDesigner : ControlDesigner

{

public override SelectionRules SelectionRules

{

get

[

SelectionRules rules = base.SelectionRules; // В зависимости от ориентации разделителя // формируем правила изменения его размеров if (this.Orientation = Orientation.Horizontal)

f

rules = SelectionRules.Moveable I SelectionRules.Visible i SelectionRules.Leftsizeable I SelectionRules.Rightsizeable;

else

{

rules = SelectionRules.Moveable | SelectionRules.Visible | SelectionRules.TopSizeable I SelectionRules.Bottomsizeable;

}

return rules;

}

}

}

Перечисление SelectionRules имеет несколько значений: О None — правила не заданы;

? Locked — запрещено менять размер и положение компонента; О TopSizeable — можно изменять размер сверху; О Bottoms izeable — можно изменять размер снизу; О Leftsizeabie — можно изменять размер слева; О Rightsizeabie — можно изменять размер справа; О Ailsizeabie — можно изменять размер с любой стороны; О Moveable — можно изменять положение компонента;

0   visible — отображать специальную рамку вокруг компонента. Например, запретить полностью изменение размеров компонента (как, например, у компонента checkBox) можно следующим образом:

public override SelectionRules SelectionRules {

get {

SelectionRules selectionRules = base.SelectionRules; selectionRules &= -(SelectionRules.AllSizeable); return selectionRules;

При разработке собственного компонента не забывайте, при необходимости настраивать нужные разрешения изменения размеров, чтобы не вводить пользователя в заблуждение.

Литература:

Агуров П. В. C#. Разработка компонентов в MS Visual Studio 2005/2008. – СПб.: БХВ-Петербург, 2008. — 480 е.: ил.

По теме:

  • Комментарии