Эндрю Троелсен - ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
- Название:ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс
- Год:2007
- Город:Москва • Санкт-Петербург • Киев
- ISBN:ISBN 5-8459-1124-9
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Эндрю Троелсен - ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание краткое содержание
В этой книге содержится описание базовых принципов функционирования платформы .NET, системы типов .NET и различных инструментальных средств разработки, используемых при создании приложений .NET. Представлены базовые возможности языка программирования C# 2005, включая новые синтаксические конструкции, появившиеся с выходом .NET 2.0, а также синтаксис и семантика языка CIL. В книге рассматривается формат сборок .NET, библиотеки базовых классов .NET. файловый ввод-вывод, возможности удаленного доступа, конструкция приложений Windows Forms, доступ к базам данных с помощью ADO.NET, создание Web-приложений ASP.NET и Web-служб XML. Книга содержит множество примеров программного кода, призванного помочь читателю в освоении предлагаемого материала. Программный код примеров можно загрузить с Web-сайта издательства.
ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:

Рис. 21.36. Добавление производной формы
После щелчка на кнопке Add (Добавить) вы увидите окно утилиты Inheritance Picker (Выбор наследования), которая позволяет выбрать форму из вашего текущего проекта или форму из внешнего компоновочного блока (с помощью кнопки Browse). Для данного примера выберите свой уже существующий тип UserMessageDialog. Вы обнаружите, что ваш новый тип Form расширяет ваш тип диалогового окна, а не базовый объект Form непосредственно. Теперь вы можете расширять полученную форму так, как захотите. Для проверки просто добавьте новый элемент управления CheckBox (с именем checkBoxItalic), который будет доступен через свойство, названное Italic.
public partial class ItalicUserMessageDialog: SimpleModalDialog.UserMessageDialog{
public ItalicUserMessageDialog() {
InitializeComponent();
}
public bool Italic {
set { checkBoxItalic.Checked = value; }
get { return checkBoxItalic.Checked; }
}
}
Теперь, имея подкласс базового типа UserMessageDialog, измените MainForm так, чтобы новое свойство Italic можно было использовать. Просто добавьте новый член-переменную типа Boolean для использования при построении объекта Font, представляющего курсивный шрифт, и измените обработчик события Click для меню Сервис→Настройка так, чтобы использовался ItalicUserMessageDialog. Вот как может выглядеть окончательный вариант программного кода.
public partial class MainWindow: Form {
private string userMessage = "Default Message";
private bool textIsItalic = false;
…
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 = e.Graphics;
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 вы предполагаете, что элементы управления должны отображаться с использованием абсолютных позиций, то это, по сути, означает, что кнопка, размещенная в окне проектирования формы на 10 пикселей ниже и на 10 пикселей правее верхнего левого угла формы, будет там оставаться в течение всей ее "жизни".
При создании формы, содержащей элементы управления пользовательского интерфейса, вы должны решить, должна ли форма позволять изменение размеров ее окна. Обычно главное окно допускает изменение размеров, тогда как диалоговые окна – нет. Напомним, что допустимость изменения размеров формы задается свойством 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 | Верхний край элемента управления стыкуется с верхним краем контейнерного элемента управления |
Например, если вы хотите, чтобы данный элемент всегда располагался по левому краю формы, вы должны написать следующее.
Читать дальшеИнтервал:
Закладка: