textbox ввод только цифр!!
пишу программу на C++ WINDOWS FORM APPLICATION.
задача:
запретить ввод в textbox букв. и чтобы можно было ввести только одну запятую
обрабатывай нажатие кнопки в поле, в обработчике в качестве параметра предается код кнопки, сравнивай этот код с нужным диапазоном и обнуляй если не попадает
мне нужен код, так как я ничего не понял что вы написали
Цитата: drtdrt
мне нужен код, так как я ничего не понял что вы написали
нужен - напиши!
ps: выпрашивание готового кода строго карается администрацией
Цитата: drtdrt
бля, ты тупой или где?????
если бы я знал как писать КОД, я бы не спрашивал!!! ты ОЛЕНЬ!
если бы я знал как писать КОД, я бы не спрашивал!!! ты ОЛЕНЬ!
дружочек, олень это ты, тебе надо код написать, я то знаю как его сделать, но увы, ты тут в пролете...
P.S. Разговарить научись для начала.
int ct=0;
while (s->Length != ct)
{
simvol = s->Substring(ct,1); //Выделение одного символа
if ((simvol != "0") &&
(simvol != "1") &&
(simvol != "2") &&
(simvol != "3") &&
(simvol != "4") &&
(simvol != "5") &&
(simvol != "6") &&
(simvol != "7") &&
(simvol != "8") &&
(simvol != "9"))
{
s = s->Remove(ct,1); //Удаляем символ
textBox1->Text = s;
}
else ct = ct + 1;
}
SendKeys::Send("{End}");
}
в чем ошибка??
[COLOR="Red"]Ввиду того, что модератор раздела давно не активен, участнику drtdrt я выдал бан на 3 месяца - за хамство. Участнику Mental_Force - нарушение за флейм.[/COLOR]
даже если скопипастить в такую форму любой бред, она его отфильтрует
если твоя форма называется Form1, то
в Form1.h
ты найдёшь нижеследующее, только без
"int gggg; int japan;String ^ simvol;"(вставишь их куда показано)
public ref class Form1 : public System::Windows::Forms::Form
{
public:
int gggg;
int japan;
String ^ simvol;
Form1(void)
{
InitializeComponent();
//
//TODO: добавьте код конструктора
//
}
потом : найдёшь то что ниже, если у тебя уже есть такое событие
private: System::Void textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e)
после него то что в фигурных скобках ниже
/* и */ - означает коммент, я прокомментил messageboxы и свои заметки, чтоб они не мешались
{
String ^ s = textBox1->Text; /* текст из текстбокса*/
; gggg=s->Length; /* его длина*/
String ^ lenfthh=""+gggg; /* его длина в формате строки */
/* MessageBox::Show( lenfthh, "length",
MessageBoxButtons::OK, MessageBoxIcon::Exclamation );*/ /* длина показана тебе */
if(gggg!=0)
simvol = s->Substring((gggg-1),1); /* если длина не равна 0, то берётся первый символ */
if(gggg!=0)
/* MessageBox::Show( simvol, "last character",
MessageBoxButtons::OK, MessageBoxIcon::Exclamation ); просто показывают последний символ из текстбокса*/
if(gggg!=0) {if ((simvol != "0") &&
(simvol != ".") &&
(simvol != "1") &&/* условие : если символ не равен цифре или точке , то : */
(simvol != "2") &&
(simvol != "3") &&
(simvol != "4") &&
(simvol != "5") &&
(simvol != "6") &&
(simvol != "7") &&
(simvol != "8") &&
(simvol != "9")) {
/*MessageBox::Show( simvol, "it's not a digit",
MessageBoxButtons::OK, MessageBoxIcon::Exclamation ); нам говорят что это не цифра*/
textBox1->Text = textBox1->Text->Remove((gggg-1),1); /*Удаляем символ который видитили не равен точке иль цифре, удаляем последний символ, именно он сейчас под наблюдением нас*/
}
}
if(gggg==0) japan=0; /* japan - количество точек в текстбоксе */
if(gggg!=0) {japan=0;
for (int g=1; g<=gggg;g++) /* если длина строчки в текстбоксе не равно 0, то комп проверяет каждый символ по отдельности начиная с первого*/
{
simvol = s->Substring((g-1),1); /* g - номер очередного символа, substring - выделяет символ */
if(simvol==".") japan++;/*найдена точка - japan становится больше*/
/* MessageBox::Show( simvol, "next",
MessageBoxButtons::OK, MessageBoxIcon::Exclamation );
просто показывает следущий символ
*/
/*тут символ проверяется если не равен точке или цифре*/
if ((simvol != "0") &&
(simvol != ".") &&
(simvol != "1") &&
(simvol != "2") &&
(simvol != "3") &&
(simvol != "4") &&
(simvol != "5") &&
(simvol != "6") &&
(simvol != "7") &&
(simvol != "8") &&
(simvol != "9"))
{/* если не равен, то видитили удаляем его*/
textBox1->Text = textBox1->Text->Remove((g-1),1);
break;}
if (japan>1)/* если japan больше 1, то есть у нас точек больше чем 1, то ...!*/
if (simvol = ".")
{textBox1->Text = textBox1->Text->Remove((g-1),1);break;}
/*... удаляем точку!*/
;
}}
lenfthh=""+japan; /*lenfthh это просто тот же japan только в формате текста*/
/*показ, сколько точек MessageBox::Show( lenfthh, " so many points",
MessageBoxButtons::OK, MessageBoxIcon::Exclamation );*/
}
Используйте стандартный контрол NumericUpDown! Специально предназначен для ввода чисел. Можно настроить на вещественные. В качестве разделителя (точка/запятая) используется символ текущей локали.