|
Программирование >> Обработка исключительных ситуаций
Элементы управления Для сохранения информации о том, как было закрыто окно, у кнопки определяют свойство DialogResult. Это свойство может принимать стандартные значения из перечисления DialogResult, определенного в пространстве имен System. Wi ndows. Forms. Значения перечисления приведены в табл. 14.5. Пример использования кнопок приведен в следующем разделе. Поле ввода TextBox Компонент TextBox позволяет пользователю вводить и редактировать текст, который запоминается в свойстве Text. Можно вводить строки практически неограниченной длины (приблизительно до 32 ООО символов), корректировать их, а также вводить защищенный текст (пароль) путем установки маски, отображаемой вместо вводимых символов (свойство PasswordChar). Для обеспечения возможности ввода нескольких строк устанавливают свойства Multiline, Scrol 1 Bars и Wordwrap. Доступ только для чтения устанавливается с помощью свойства Readonly. Элемент содержит методы очистки (Clear), выделения (Select), копирования в буфер (Сору), вставки из него (Paste) и др., а также реагирует на множество событий, основными из которых являются KeyPress и KeyOown. Рассмотрим создание простого приложения, в котором использованы компоненты типа Label, Button и TextBox. Главное окно приложения показано на рис. 14.7. Рис. 14.7. Окно приложения Диагностика кармы Пользователь вводит число и нажимает клавишу Enter, после чего введенное значение сравнивается с числом, задуманным генератором случайных чисел. Если пользователь не угадал, выводится сообщение Не угадали! . Каждое следующее сообщение для наглядности немного сдвигается вправо относительно предыдущего. После совпадения выводится итоговое сообщение, и фокус ввода передается на кнопку Еще раз (рис. 14.8). Коэффициент невезучести определяется как количество попыток, деленное на максимально возможное значение числа. Создание приложения начинается с проектирования его интерфейса. На форме располагаются метки, поля ввода и кнопка. В окне свойств их свойству Text задаются перечисленные в табл. 14.6 значения (в окне отображаются свойства в1де-ленного элемента; элемент выделяется щелчком мыши). Глава 14. Введение в программирование под Windows Рис. 14.8. Окно приложения после ввода правильного ответа Таблица 14.6. Значение свойства Text для компонентов приложения Компонент Значение свойства Text Forml Диагностика карм1 label 1 Введдите число label2, label3, textBoxl Пустое значение1 buttonl Еще раз Поведение приложения задается в обработчиках событий. Число надо загадывать до того, как пользователь введет первый ответ, а затем после каждого щелчка на кнопке Еще раз. Следовательно, эти действия должны выполняться при загрузке формы (событие Load) и щелчке на кнопке (событие CI i ck). Ответ пользователя анализируется при нажатии клавиши Enter после ввода числа (событие KeyPress элемента textBoxl). Вызов редактора программ выполняется двойным щелчком рядом с соответствующим событием элемента на вкладке Events окна свойств (см. рис. 14.5). Для хранения загаданного числа и ответа пользователя применяются поля i и к. В константе max хранится максимально возможное число. Переменная rnd представляет собой экземпляр генератора случайных чисел . Сокращенный текст программы с комментариями приведен в листинге 14.3. Листинг 14.3. Программа Угадай число using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; Необходдимо стереть значение, заданное по умолчанию. Класс Bandcm описан в одноименном разделе (см. с. 148). Элементы управления 329 namespace WindowsApplicationl { public class Forml : Form private Label labell: private TextBox textBoxl; private Button buttonl; private Label label2; private Label label3; private Container components = null; public FormlO { ... } protected override void Dispose( bool disposing ){...} Windows Form Designer generated code { ... } const int max - 10; максимальное значение загадываемого числа Random rnd; экземпляр генератора случайных чисел int i, k; II загадка и отгадка static void MainO { ... } private void Forml Load(object sender, EventArgs e) rnd = new RandomO; i = rnd.Next(max); загадано число в диапазоне от 0 до max private void textBoxl KeyPress(object sender, KeyPressEventArgs e) int n; if ( e.KeyChar != (char)13 ) return; если нажата не клавиша Enter, выйти try преобразование ввода пользователя в число n = Convert.ТоInt32(textBoxl.Text); catch n = -1; если введено не число, принять за неверный ответ if ( n != i ) = = = = = = = = = = пользователь не угадал label 2.Left += 5; label2.Text = He угадали! ; textBoxl. ClearO; k++; увеличение счетчика попыток buttonl.Visible = false; } продолжение
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |