Рейтинг:
2
Jochen Arndt
Это не может быть просто сделано с помощью TextChanged
событие, потому что изменение содержимого снова вызовет событие.
Обычно для отображения результата используется другое текстовое поле или кнопка для выполнения вычисления.
Вы также должны использовать Типа int32.Метод TryParse (String, Int32) (System)[^] для обработки недопустимого ввода.
Если вы все еще хотите использовать тот же ящик, вы должны использовать защитную переменную:
bool selfUpdate = false;
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (!selfUpdate)
{
int x;
if (Int32.TryParse(textBox1.Text, out x))
{
x *= 350;
selfUpdate = true;
textBox1.Text = x.ToString();
selfUpdate = false;
}
}
}
[РЕДАКТИРОВАТЬ]
Но обратите внимание, что при использовании вышеизложенного каждое изменение будет обновляться так, что можно будет вводить только отдельные цифры или вставлять текст.
[/РЕДАКТИРОВАТЬ]
NebroProg
ошибка здесь, если (int.TryParse(textBox1. Text, x))
Jochen Arndt
Смотрите мой обновленный ответ.
Код был просто для того, чтобы показать, как это можно сделать. Это необычное и не рекомендуемое решение.
NebroProg
Я попытался ввести любую цифру, но результат был 0
Jochen Arndt
Я не знаю, что происходит, потому что не могу запустить ваш код.
Но вы можете использовать отладчик, чтобы установить точку останова для вашей функции и проверить переменные. Или используйте методы WriteLine () из классов Debug или Trace, чтобы вывести их в окно вывода debug.
Richard MacCutchan
Использование selfUpdate здесь очень умно; мне никогда не приходило в голову. :большой палец вверх:
Jochen Arndt
Почему я должен попробовать?
Я не задал первоначального вопроса, но предложил решение.
И это не сработает при использовании внутри обработчика событий TextChanged, потому что присвоение нового значения текстовому полю снова вызовет событие, что приведет к бесконечному циклу, создающему переполнение стека (как уже объяснялось в моем ответе).
Даже если вы не вызываете это в обработчике, ваш код не обрабатывает недопустимые входные данные и создает исключения, которые завершают работу приложения, если оно не поймано.
Таким образом, ваш код не работает без вышеуказанных дополнительных условий и не отвечает на первоначальный вопрос (кроме использования метода ToString ()).
Наконец, ваш код даже не будет компилироваться!
radha patil
извините... вместо того, чтобы опубликовать ответ, я ответил вам, вот что я удалил комментарий
Рейтинг:
1
SurangiTi
Преобразуйте int в string перед тем, как назначить его свойству text-box Text.
textBox1.Text=x.ToString();
обратитесь к этому, чтобы узнать
Convert.ToString Method.
NebroProg
это дает ошибку
SurangiTi
в чем же ошибка?
SurangiTi
Я думаю, что вам не совсем ясно, чего вы хотите достичь.
Я предполагаю, что вы хотите умножить целое число, записанное в текстовое поле 1. Существует множество способов достижения этого результата, основанных на требовании.
Примеры
--------
1) Используйте текстовое поле и метку. [можно ввести только одну цифру]
2) Используйте текстовое поле и кнопку. [это идеальное решение]
3) есть много других способов...
В любом случае вам нужно проверить вводимые пользователем данные, иначе возникнут ошибки преобразования, и этого не избежать.