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

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

Жанры

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

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

Шрифт:

Тип ErrorProvider предлагает очень небольшой набор членов. Для нашего примера самым важным является свойство BlinkStyle, которому можно присвоить любое значение из перечня ErrorBlinkStyle. Описания этих значений даются в табл. 21.11.

Таблица 21.11. Значения ErrorBlinkStyle

Значение Описание
AlwaysBlink Заставляет пиктограмму ошибки "мигать", когда ошибка отображается впервые или когда элементу управления назначается строка новой ошибки, а пиктограмма ошибки уже отображается
BlinkIfDifferentError Заставляет
пиктограмму ошибки "мигать", когда пиктограмма ошибки уже отображается, но элементу управления назначается строка новой ошибки
NeverBlink Индикатор того, что пиктограмма ошибки не должна "мигать" никогда 

Для примера добавьте на вкладку ErrorProvider элементы управления Button, TextBox и Label, как показано на рис. 21.21. Затем перетащите в окно проектирования формы элемент ErrorProvider и присвойте этому элементу имя tooManyCharactersErrorProvider. Вот соответствующий фрагмент программного кода InitializeComponent.

private void InitializeComponent {

 …

 //

 // tooManyCharactersErrorProvider

 //

 this.tooManyCharaсtersErrorProvider.BlinkRate = 500;

 this.tooManyCharactersErrorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.AlwaysBlink;

 this.tooManyCharactersErrorProvider.ContainerControl = this;

}

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

private void txtInput_Validating(object sender, CancelEventArgs е) {

 // Длина текста меньше 5?

 if (txtInput.Text.Length › 5) {

errorProvider1.SetError(txtInput, "Больше 5 нельзя!");

 } else // Все в порядке, не показывать ничего.

errorProvider1.SetError(txtInput, ");

}

Элемент TreeView

Элементы управления TreeView очень полезны тем, что они позволяют визуально отображать иерархии данных (например, структуру каталогов или любую другую структуру, связанную отношением "родитель-потомок"). Элемент управления TreeView предлагает очень широкие возможности настройки. При желании вы можете добавить пользовательские изображения, задать цвет узлов, элементы контроля узла и другие визуальные усовершенствования. (Заинтересованным читателям за дополнительной информацией об этом элементе управления предлагается обратиться к документации .NET Framework 2.0 SDK.)

Чтобы продемонстрировать основные возможности использования TreeView, на следующей странице вашего TabControl мы программно разместим элемент TreeView, определяющий ряд узлов наивысшего уровня, представляющих набор типов Car (автомобиль),

Каждый узел Car имеет два подчиненных узла, представляющих текущую скорость автомобиля и любимую радиостанцию водителя. На рис. 21.22 обратите внимание на то, что выбранный элемент выделен подсветкой. Также заметьте, что в области элемента Label кроме выбранного узла отображаются имена родительского и следующего узлов (если последние имеются).

Рис. 21.22. Элемент TreeView в действии

Предполагая, что соответствующий пользовательский интерфейс скомпонован из элементов управления TreeView (с именем treeViewCars) и Label (с именем lblNodeInfo), добавьте в свой проект ExoticControls новый файл C#, который моделирует тривиальный типа Car, имеющий Radio.

namespace ExoticControls {

 class Car {

public Car(string pn, int cs) {

petName = pn;

currSp = cs;

}

public string petName;

public int currSp;

public Radio r;

 }

 class Radio {

public double favoriteStation;

public Radio(double station) { favoriteStation = station; }

 }

}

Производный от Form тип будет поддерживать обобщенный тип List‹› (с именем listCars), содержащий 100 типов Car, которые будут занесены в список в конструкторе типа MainForm, заданном по умолчанию. Кроме того, этот конструктор вызывает новый вспомогательный метод BuildCarTreeView, который не имеет никаких аргументов и возвращает void. Вот соответствующая модификация программного кода.

public partial class MainWindow: Form {

 // Создание нового List для хранения объектов Car.

 private List‹Car› listCars = new List‹Car›;

 public MainWindow {

// Заполнение ячеек List‹› и построение TreeView.

double offset = 0.5;

for (int x = 0; x ‹ 100; x++) {

listCars.Add(new Car(string.Format("Car {0}", x), 10 + x));

offset += 0.5;

listCars[x].r = new Radio(89.0 + offset);

}

BuildCarTreeView;

 }

 …

}

Обратите внимание на то, что petName каждого автомобиля задается на основе текущего значений x (Car 0, Car 1, Car 2 и т.д.). Текущая скорость образуется путем сдвига x на 10 (от 10 км/ч до 109 км/ч), а любимая радиостанция задается сдвигом от начального значения 89.0 на 0.5 (90, 90.5, 91, 91.5 и т.д.).

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

Идеальный мир для Лекаря 8

Сапфир Олег
8. Лекарь
Фантастика:
юмористическое фэнтези
аниме
7.00
рейтинг книги
Идеальный мир для Лекаря 8

Последняя Арена 6

Греков Сергей
6. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Последняя Арена 6

По воле короля

Леви Кира
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
По воле короля

Душелов. Том 4

Faded Emory
4. Внутренние демоны
Фантастика:
юмористическая фантастика
ранобэ
фэнтези
фантастика: прочее
хентай
эпическая фантастика
5.00
рейтинг книги
Душелов. Том 4

Темный Лекарь 2

Токсик Саша
2. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 2

Эволюция мага

Лисина Александра
2. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эволюция мага

(Не) моя ДНК

Рымарь Диана
6. Сапфировые истории
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
(Не) моя ДНК

Протокол "Наследник"

Лисина Александра
1. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Протокол Наследник

Измена. Наследник для дракона

Солт Елена
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Измена. Наследник для дракона

Неудержимый. Книга II

Боярский Андрей
2. Неудержимый
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Неудержимый. Книга II

Камень. Книга 4

Минин Станислав
4. Камень
Фантастика:
боевая фантастика
7.77
рейтинг книги
Камень. Книга 4

Измена. Право на сына

Арская Арина
4. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на сына

Инквизитор Тьмы 4

Шмаков Алексей Семенович
4. Инквизитор Тьмы
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Инквизитор Тьмы 4

Кротовский, сколько можно?

Парсиев Дмитрий
5. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Кротовский, сколько можно?