- •Содержание
- •Введение в программирование под Windows
- •Событийно-управляемое программирование
- •Шаблон Windows-приложения
- •Класс Control
- •Элементы управления
- •Метка Label
- •Кнопка Button
- •Поле ввода TextBox
- •Меню MainMenu и ContextMenu
- •Флажок CheckBox
- •Переключатель RadioButton
- •Панель GroupBox
- •Список ListBox
- •Предварительные замечания о формах.
- •Класс Form
- •Диалоговые окна
- •Класс Application
- •Краткое введение в графику
- •Индивидуальные задания
- •Вариант 0
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Вариант 16
- •Вариант 17
- •Вариант 18
- •Вариант 19
- •Вариант 20
- •Пример выполнения варианта №0
Поле ввода TextBox
Компонент TextBox позволяет пользователю вводить и редактировать текст, который запоминается в свойстве Text. Можно вводить строки практически неограниченной длины (приблизительно до 32 000 символов), корректировать их, а также вводить защищенный текст (пароль) путем установки маски, отображаемой вместо вводимых символов (свойство PasswordChar). Для обеспечения возможности ввода нескольких строк устанавливают свойства Multiline, ScrollBars и WordWrap. Доступ только для чтения устанавливается с помощью свойства ReadOnly.
Элемент содержит методы очистки (Clear), выделения (Select), копирования в буфер (Copy), вставки из него (Paste) и другие, а также реагирует на множество событий, основными из которых являются KeyPress и KeyDown.
Рассмотрим создание простого приложения, в котором использованы компоненты типа Label, Button и TextBox. Главное окно приложения показано на рис. 9.7.
Рис. 9.7 - Окно приложения «Диагностика кармы»
Пользователь вводит число и нажимает клавишу Enter, после чего введенное значение сравнивается с числом, «задуманным» генератором случайных чисел. Если пользователь не угадал, выводится сообщение «Не угадали!». Каждое следующее сообщение для наглядности немного сдвигается вправо относительно предыдущего. После совпадения выводится итоговое сообщение, и фокус ввода передается на кнопку Еще раз (рис. 9.8). «Коэффициент невезучести» определяется как количество попыток, деленное на максимально возможное значение числа.
Рис. 9.8 - Окно приложения после ввода правильного ответа
Создание приложения начинается с проектирования его интерфейса. На форме располагаются метки, поля ввода и кнопка. В окне свойств их свойству Text задаются перечисленные в табл. 9.6 значения (в окне отображаются свойства выделенного элемента; элемент выделяется щелчком мыши).
Таблица 9.6 - Значение свойства Text для компонентов приложения
Компонент |
Значение свойства Text |
Form1 |
Диагностика кармы |
label1 |
Введите число |
label2, label3, textBox1 |
Пустое значение |
button1 |
Еще раз |
Поведение приложения задается в обработчиках событий. Число надо загадывать до того, как пользователь введет первый ответ, а затем после каждого щелчка на кнопке Еще раз. Следовательно, эти действия должны выполняться при загрузке формы (событие Load) и щелчке на кнопке (событие Click). Ответ пользователя анализируется при нажатии клавиши Enter после ввода числа (событие KeyPress элемента textBox1).
Вызов редактора программ выполняется двойным щелчком рядом с соответствующим событием элемента на вкладке Events окна свойств (см. рис. 9.5). Для хранения загаданного числа и ответа пользователя применяются поля i и k. В константе max хранится максимально возможное число. Переменная rnd представляет собой экземпляр генератора случайных чисел.
Сокращенный текст программы с комментариями приведен в листинге 9.3.
Листинг 9.3. Программа «Угадай число»
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace WindowsApplication1
{
public class Form1 : Form
{
private Label label1;
private TextBox textBox1;
private Button button1;
private Label label2;
private Label label3;
private Container components = null;
public Form1() { ... }
protected override void Dispose( bool disposing ) { ... }
Windows Form Designer generated code { ... }
const int max = 10; // максимальное значение загадываемого числа
Random rnd; // экземпляр генератора случайных чисел
int i, k; // загадка и отгадка
static void Main() { ... }
private void Form1_Load(object sender, EventArgs e)
{
rnd = new Random();
i = rnd.Next(max); // загадано число в диапазоне от 0 до max
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
int n;
if ( e.KeyChar != (char)13 )
return; // если нажата не клавиша Enter, выйти
try // преобразование ввода пользователя в число
{
n = Convert.ToInt32(textBox1.Text);
}
catch
{
n = -1; // если введено не число, принять за неверный ответ
}
if ( n != i ) // ============ пользователь не угадал
{
label2.Left += 5;
label2.Text = "Не угадали!";
textBox1.Clear();
k++; // увеличение счетчика попыток
button1.Visible = false;
}
else // ============== пользователь угадал
{
label2.Left = 32; // восстановить начальное положение метки
label2.Text = "Коэффициент невезучести";
double koef = 1.0 * k / max;
label3.Text = koef.ToString();
button1.Visible = true;
}
}
private void button1_Click(object sender, System.EventArgs e)
{
i = rnd.Next(max); // загадано число в диапазоне от 0 до max
k = 0; // обнуление количества попыток ответа
textBox1.Clear(); // поле ввода очищено
textBox1.Focus(); // курсор установлен на поле ввода
label2.Text = ""; // метки очищены
label3.Text = "";
}
}
}