|
Прошел курс. Получил код Dreamspark. Ввожу код на сайте, пишет: Срок действия этого кода проверки уже истек. Проверьте, правильно ли введен код. У вас осталось две попытки. Вы также можете выбрать другой способ проверки или предоставить соответствующие документы, подтверждающие ваш академический статус.
Как активировать код? |
Стандартные элементы управления
Текстовые элементы управления
В библиотеке .NET Framework 2.0 в пространстве имен { } System.Windows.Forms имеется абстрактный класс TextBoxBase, который обеспечивает производные от него классы множеством возможностей по редактированию текста. Цепочка наследования этих классов выглядит так
Из рисунка видно, что существуют 5 классов, способных порождать текстовые элементы управления:
- MaskedTextBox
- RichTextBox
- TextBox
- DataGridTextBox
- DataGridViewTextBoxEditingControl
Мы рассмотрим первые три класса как наиболее простые. Каждый из них имеет свойство Text типа string, в котором хранится редактируемая в элементе информация. Большинство других свойств принимают булево значение и определяют режим работы элемента.
Текстовый элемент с маской MaskedTextBox
Этот элемент удобно применить в том случае, когда нужно контролировать пользовательский ввод. Приведем пример с вводом телефонного номера. Вот какое поле ввода можно было бы предоставить пользователю
using System;
using System.Drawing;
using System.Windows.Forms;
namespace Test
{
// Класс приложения
class MyClass : Form
{
// Объявляем ссылку на элемент поля ввода телефона
MaskedTextBox phone;
public MyClass() // Конструктор
{
// Код из конструктора переносим в обработчик
this.Load += new EventHandler(MyClass_Load);
}
void MyClass_Load(object sender, EventArgs e)
{
// Текст заголовка окна
this.Text = "Элемент MaskedTextBox";
// Отключаем размеры
this.MaximizeBox = false;
this.FormBorderStyle = FormBorderStyle.FixedSingle;
// Создаем элемент маскированного поля ввода телефона
phone = new MaskedTextBox();
phone.Parent = this;// Привязываем к форме
// Настраиваем маскированное поле ввода
int x = (this.ClientSize.Width - phone.Width) / 2;
int y = this.ClientSize.Height / 3 - phone.Height;
phone.Location = new Point(x, y);
phone.Mask = "00-00-00";
Font font = new Font("Arial", 12, FontStyle.Bold);
phone.Font = font;
phone.ForeColor = Color.Blue;// Синий
// Регистрируем событие, когда символ не может быть принят полем
phone.MaskInputRejected += phone_MaskInputRejected;
// Создаем и настраиваем текстовую метку
Label label = new Label();
label.Text = "Введите номер телефона";
label.Parent = this;
label.Width = this.ClientSize.Width;
label.Font = font;
label.ForeColor = Color.FromArgb(255, 0, 0);// Красный
// Позиционируем метку над полем ввода
label.Location = new Point(10, phone.Location.Y -
label.Height - 10);
}
ToolTip toolTip = new ToolTip();// Содаем объект всплывающей подсказки
void phone_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
{
if (phone.MaskFull)
{
toolTip.ToolTipTitle = "Ввод отклонен -
поле заполнено";
// Позиционируем всплывающую подсказку относительно поля ввода
toolTip.Show("Вы пытаетесь ввести" +
"\n" + "слишком длинный номер",
phone, // Привязка к элементу
-phone.Location.X,// Сдвинули в начало окна
phone.Height, // Сдвинули к низу поля ввода
3000);// Подсказка ждет 3 секунды
}
else if (e.Position >= phone.Mask.Length)
{
toolTip.ToolTipTitle = "Ввод отклонен -
выход за границу";
// Позиционируем всплывающую подсказку относительно поля ввода
toolTip.Show("Не могу добавить новый
символ\nза границей поля ввода",
phone, // Привязка к элементу
-phone.Location.X,// Сдвинули в начало окна
phone.Height, // Сдвинули к низу поля ввода
3000);// Подсказка ждет 3 секунды
}
else
{
toolTip.ToolTipTitle = "Ввод отклонен -
нужны цифры";
// Позиционируем всплывающую подсказку относительно поля ввода
toolTip.Show(
"Номер телефона должен состоять
только из цифр (0-9)",
phone, // Привязка к элементу
-phone.Location.X,// Сдвинули в начало окна
phone.Height, // Сдвинули к низу поля ввода
3000);// Подсказка ждет 3 секунды
}
}
}
// Запуск
class Program
{
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new MyClass());
}
}
}
Листинг
15.5 .
Применение MaskedTextBox для контроля ввода телефонного номера
Результат выполнения выглядит так
Элементы строкового свойства Mask могут быть такими
| Маскирующий элемент | Пояснения |
|---|---|
| 0 | Ожидает любую цифру от 0 до 9 |
| 9 | Ожидается цифра или пробел |
| # | Ожидается цифра, пробел, знаки + или - |
| L | Ожидаются ASCII -символы от a до z или от A до Z |
| ? | Ожидаются любые ASCII -символы |
| & | Ожидается любой символ. Если свойство AsciiOnly равно true, то работает как элемент "L" |
| C | Ожидается любой неуправляющий символ. Если свойство AsciiOnly равно true, то работает как элемент "?" |
| A | Ожидает любые алфавитно-цифровые символы. Если AsciiOnly равно true, то работает как элемент "L" |
| И так далее по MSDN … | |

