Уроки 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; } }; }
Результат:
Следующий урок >>