private void configureToolStripMenuItem_Click(object sender, EventArgs e) {
ItalicUserMessageDialog dlg = new ItalicUserMessageDialog;
dlg.Message = userMessage;
dlg.Italic = textIsItaliс;
// Если пользователь щелкнул на OK, отобразить сообщение.
if (DialogResult.OK == dlg.ShowDialog) {
userMessage = dlg.Message;
textIsItalic = dlg.Italic;
Invalidate;
}
// Лучше, чтобы очистку внутренних элементов выполняло само
// диалоговое окно, не дожидаясь сборщика мусора. dlg.Dispose;
}
private void MainWindow_Paint(object sender, PaintEventArgs e) {
Graphics g
Font f = null;
if (textIsItalic) f = new Font("Times New Roman", 24, FontStyle.Italic);
else f = new Font("Times New Roman", 24);
g.DrawString(userMessage, f, Brushes.DarkBlue, 50, 50);
}
}
Исходный код. Проект SimpleModalDialog размещен в подкаталоге, соответствующем главе 21.
Динамическое позиционирование элементов управления Windows Forms
Чтобы завершить эту главу, давайте рассмотрим несколько подходов, которые можно использовать для управления размещением элементов управления в форме. Если при создании типа Form вы предполагаете, что элементы управления должны отображаться с использованием
При создании формы, содержащей элементы управления пользовательского интерфейса, вы должны решить, должна ли форма позволять изменение размеров ее окна. Обычно главное окно допускает изменение размеров, тогда как диалоговые окна – нет. Напомним, что допустимость изменения размеров формы задается свойством 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;