Чтение онлайн

на главную - закладки

Жанры

ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание

Троелсен Эндрю

Шрифт:

При создании формы, содержащей элементы управления пользовательского интерфейса, вы должны решить, должна ли форма позволять изменение размеров ее окна. Обычно главное окно допускает изменение размеров, тогда как диалоговые окна – нет. Напомним, что допустимость изменения размеров формы задается свойством FormBorderStyle. которое может принимать любое из значений перечня FormBorderStyle.

public enum System.Windows.Forms.FormBorderStyle {

 None, FixedSingle, Fixed3D,

 FixedDialog, Sizable,

 FixedToolWindow, SizableToolWindow

}

Предположим, что вы захотели изменить

размеры формы. Тогда в связи с содержащимися в форме элементами управления возникают интересные вопросы. Например, если пользователь сделает форму меньше, чем необходимо для отображения всех элементов управления, должны ли эти элементы управления изменять свои размеры (и, возможно, расположение) в соответствии с размерами формы?

Свойство Anchor

В Windows Forms свойство Anchor используется для определения относительной фиксированной позиции, в которой всегда должен пребывать данный элемент управления. Каждый производный от Control тип имеет свойство Anchor, которое может принимать любое из значений перечня AnchorStyles, описанных в табл. 21.13.

Таблица 21.13. Значения AnchorStyles

Значение Описание
Bottom Нижний край элемента управления прикрепляется к нижнему краю контейнера
Left Левый край элемента управления прикрепляется к левому краю контейнера
None Элемент управления не прикрепляется к краям контейнера
Right Правый край элемента управления прикрепляется к правому краю контейнера
Top Верхний край элемента управления прикрепляется к верхнему краю контейнера

Чтобы закрепить элемент в верхнем левом углу окна, можно связывать соответствующие значения операцией ИЛИ (например, AnchorStyles.Top | AnchorStyles.Left). Целью использования свойства Anchor является указание того, какие расстояния от краев элемента управления до краев контейнера должны быть фиксированы. Например, если задать для кнопки следующее значение Anchor:

// Закрепление элемента относительно правого края.

myButton.Anchor = AnchorStyles.Right;

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

Свойство Dock

Другой особенностью программирования Windows Forms является возможность задать cтыковочное поведение элементов управления. С помощью свойства Dock элемента управления можно указать, какой стороны (или каких сторон) формы должен касаться данный элемент. Значение, которое вы назначите свойству Dock элемента управления, учитывается вне зависимости от текущих размеров окна формы. Допустимые значения описаны в табл. 21.14.

Таблица 21.14. Значения DockStyle 

Значение Описание
Bottom Нижний край элемента управление стыкуется с нижним краем контейнерного элемента управления
Fill Все края элемента управления стыкуются со всеми краями контейнерного элемента управления, и соответствующим образом изменяется размер
Left Левый край элемента управления
стыкуется с левым краем контейнерного элемента управления
None  Элемент управления не стыкуется с краем контейнерного элемента управления
Right Правый край элемента управления стыкуется с правым краем контейнерного элемента управления
Top Верхний край элемента управления стыкуется с верхним краем контейнерного элемента управления

Например, если вы хотите, чтобы данный элемент всегда располагался по левому краю формы, вы должны написать следующее.

// Этот элемент всегда размещается по левому краю формы,

// независимо от текущих размеров формы.

myButton.Dock = DockStyle.Left;

Чтобы понять, во что "выливается" установка свойств Anchor и Dock, рассмотрите проект AnchoringControls, который содержится в загружаемом файле примеров для этой книги. После компоновки и запуска этого приложения вы сможете использовать его систему меню для установки различных значений AnchorStyles и DockStyle, чтобы наблюдать изменения, происходящие при этом в поведении типа Button (рис. 21.37).

Не забудьте переопределить размеры формы при изменении свойства Anchor, чтобы выяснить, как на это отвечает Button.

Исходный код. Проект AnchoringControls размещен в подкаталоге, соответствующем главе 21,

Рис. 21.37. Приложение AnchoringControls

Табличное и потоковое размещение элементов

В .NET 2.0 предлагается еще один способ управления размещением элементов управления в форме – с помощью одного из двух администраторов размещения. Типы TableLayoutPanel и FlowLayoutPanel могут использоваться в области клиента формы с целью управления размещением внутренних элементов управления. Предположим, например, что в окне проектирования формы вы поместили в форму новый элемент FlowLayoutPanel и настроили его на стыковку со всеми краями родительской формы (рис. 21.38).

Рис. 21.38. Стыковка FlowLayoutPanel в форме

В режиме проектирования формы добавьте в FlowLayoutPanel десять новых типов Button. Если теперь выполнить приложение, вы заметите, что ваши десять кнопок автоматически распределятся в форме, и это очень напоминает стандартный HTML.

С другой стороны, если вы создаете форму, содержащую TableLayoutPanel, вы можете построить пользовательский интерфейс, который будет поделен на "ячейки" (рис. 21.39).

Рис. 21.39. Тип TableLayoutPanel

Если вы выберете пункт Edit Rows and Columns (Редактировать строки и столбцы) из меню встроенного редактора элемента в окне проектирования формы (как показано на рис. 21.39), то вы сможете изменить формат TableLayoutPanel для каждой ячейки (рис. 21.40).

Рис. 21.40. Настройка ячеек типа TableLayoutPanel

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

Поделиться:
Популярные книги

Жалкая

Макинтайер Эмили
3. Долго и Несчастливо
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Жалкая

Беглец

Бубела Олег Николаевич
1. Совсем не герой
Фантастика:
фэнтези
попаданцы
8.94
рейтинг книги
Беглец

Академия проклятий. Книги 1 - 7

Звездная Елена
Академия Проклятий
Фантастика:
фэнтези
8.98
рейтинг книги
Академия проклятий. Книги 1 - 7

Измена. Верни мне мою жизнь

Томченко Анна
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Верни мне мою жизнь

Измена

Рей Полина
Любовные романы:
современные любовные романы
5.38
рейтинг книги
Измена

Гардемарин Ее Величества. Инкарнация

Уленгов Юрий
1. Гардемарин ее величества
Фантастика:
городское фэнтези
попаданцы
альтернативная история
аниме
фантастика: прочее
5.00
рейтинг книги
Гардемарин Ее Величества. Инкарнация

Сердце для стража

Каменистый Артем
5. Девятый
Фантастика:
фэнтези
боевая фантастика
9.20
рейтинг книги
Сердце для стража

Черный Маг Императора 11

Герда Александр
11. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Черный Маг Императора 11

Имя нам Легион. Том 3

Дорничев Дмитрий
3. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 3

Жена фаворита королевы. Посмешище двора

Семина Дия
Фантастика:
фэнтези
5.00
рейтинг книги
Жена фаворита королевы. Посмешище двора

Как я строил магическую империю 5

Зубов Константин
5. Как я строил магическую империю
Фантастика:
попаданцы
аниме
фантастика: прочее
фэнтези
5.00
рейтинг книги
Как я строил магическую империю 5

Блуждающие огни 2

Панченко Андрей Алексеевич
2. Блуждающие огни
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
альтернативная история
фэнтези
5.00
рейтинг книги
Блуждающие огни 2

Ратник

Ланцов Михаил Алексеевич
3. Помещик
Фантастика:
альтернативная история
7.11
рейтинг книги
Ратник

Маленькая слабость Дракона Андреевича

Рам Янка
1. Танцы на углях
Любовные романы:
современные любовные романы
эро литература
5.25
рейтинг книги
Маленькая слабость Дракона Андреевича