Поле ввода TextBox

Компонент TextBox позволяет пользователю вводить и редактировать текст, кото­рый запоминается в свойстве Text. Можно вводить строки практически неограни­ченной длины (приблизительно до 32 000 символов), корректировать их, а также вводить защищенный текст (пароль) путем установки маски, отображаемой вме­сто вводимых символов (свойство PasswordChar). Для обеспечения возможности ввода нескольких строк устанавливают свойства Multiline, Scroll Bars и Wordwrap.

Доступ только для чтения устанавливается с помощью свойства Readonly. Элемент содержит методы очистки (Clear), выделения (Select), копирования в буфер (Сору), вставки из него (Paste) и др., а также реагирует на множество со­бытий, основными из которых являются KeyPress и KeyDown.

Рассмотрим создание простого приложения, в котором использованы компонен­ты типа Label, Button и TextBox. Главное окно приложения показано на рис. 14.7.

Пользователь вводит число и нажимает клавишу Enter, после чего введенное зна­чение сравнивается с числом, «задуманным» генератором случайных чисел. Если пользователь не угадал, выводится сообщение «Не угадали!». Каждое следующее сообщение для наглядности немного сдвигается вправо относительно предыдуще­го. После совпадения выводится итоговое сообщение, и фокус ввода передается на кнопку Еще раз (рис. 14.8). «Коэффициент невезучести» определяется как ко­личество попыток, деленное на максимально возможное значение числа. Создание приложения начинается с проектирования его интерфейса. На форме располагаются метки, поля ввода и кнопка. В окне свойств их свойству Text зада­ются перечисленные в табл. 14.6 значения (в окне отображаются свойства выде­ленного элемента; элемент выделяется щелчком мыши).

Рис. 14.8. Окно приложения после ввода правильного ответа


Таблица 14.6. Значение свойства Text для компонентов приложения


Компонент Значение свойства Text

Form1 Диагностика кармы

label1 Введите число

label2, label3, textBox1 Пустое значение

button1 Еще раз

Поведение приложения задается в обработчиках событий. Число надо загадывать до того, как пользователь введет первый ответ, а затем после каждого щелчка на кнопке Еще раз. Следовательно, эти действия должны выполняться при загрузке формы (событие Load) и щелчке на кнопке (событие Click). Ответ пользователя анализируется при нажатии клавиши Enter после ввода числа (событие KeyPress элемента textBox1).

Вызов редактора программ выполняется двойным щелчком рядом с соответст­вующим событием элемента на вкладке Events окна свойств (см. рис. 14.5). Для хранения загаданного числа и ответа пользователя применяются поля i и к. В кон­станте max хранится максимально возможное число. Переменная rnd представля­ет собой экземпляр генератора случайных чисел2. Сокращенный текст программы с комментариями приведен в листинге 14.3.

Листинг 14.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 textBoxl_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_C1ick(object sender, System.EventArgs e)

{

i = rnd.Next(max); // загадано число в диапазоне от 0 до max

к = 0; // обнуление количества попыток ответа

textBoxl.Clear(); // поле ввода очищено

textBox1.Focus(); // курсор установлен на поле ввода

label2.Text = ""; // метки очищены

label3.Text = "";

}

}

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: