Генератор цветов Уроки C++ Уроки Windows forms Учебники по программированию Уроки HTML Уроки CSS Готовые задания Исходники Полезные программы
регистрация доменов

Дешёвые домены


Уроки Windows Forms C++/C#




В textBox можно вводить только цифры в MVS C++

В данном уроке будет рассмотрена очень актуальная задача – в текстовое поле пользователь может вводить только цифры и запятую (или точку), которая будет разделять целую часть числа от дробной. В предыдущем уроке был приведён пример, в котором бала реализована "защита от дурака", но во многих случаях актуальней вообще запретить пользователю вводить что-либо иное, кроме разрешённого. В этом уроке мы этим и займёмся. Для этого нам понадобиться всего лишь два элемента – "textBox" и "label". Что бы программа поняла, какой разделитель используется на вашем компьютере, в Form1_Load показана строка кода, который определяет это. Для осуществления, собственно, самой проверки вводимых данных в "textBox" нужно воспользоваться свойством "KeyPress". О том как выбрать свойства элемента написано в этом уроке. Вот вид программы:




Данная программа очень полезна, поэтому обязательно скомпилируйте её, так как в дальнейшем она будет использоваться как фрагмент более серьёзного проекта. Вот код данной программы:


C++


#pragma endregion
String^ TorZ; // Точка или запятая
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
this->Text = "Только цифры";
label1->Text = "Можно вводить только цифры!";
// Выясняем что установлено в настройках в качестве разделителя
// точка или запятая
TorZ = Globalization::NumberFormatInfo::CurrentInfo->NumberDecimalSeparator;
}

private: System::Void textBox1_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e) {
bool TZFound = false; // Разделительный знак найден
if (Char::IsDigit(e->KeyChar) == true) return;
if (e->KeyChar == (char)Keys::Back) return;
if (textBox1->Text->IndexOf(TorZ) != -1)
TZFound = true;
if (TZFound == true) { e->Handled = true; return; }

if (e->KeyChar.ToString() == TorZ) return;
e->Handled = true;
}

};
}




Результат:


Следующий урок >>