NebroProg Ответов: 6

Как преобразовать целое число в строку и вычислить результат в texbox


У меня есть текстовое поле, и я обычно умножаю значение в текстовом поле, а затем использую это текстовое поле для отображения результата в textbox_textChange()
проводка появляется в переменной x
вот мой код..

Что я уже пробовал:

private void textBox1_TextChanged(object sender, EventArgs e)
      {

          int x = int.Parse(textBox1.Text) * 350;

          textBox1.Text = x ;

      }

6 Ответов

Рейтинг:
2

Karthik_Mahalingam

textBox1.Text = x.ToString() ;

использовать Типа int32.метод toString [^] или Преобразовать.метод toString [^]

Примечание: используйте Типа int32.Метод TryParse [^] чтобы избежать исключения недопустимого формата


Рейтинг:
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

извините... вместо того, чтобы опубликовать ответ, я ответил вам, вот что я удалил комментарий

Рейтинг:
2

NebroProg

Спасибо большое моим друзьям ^^
Я пытаюсь и пытаюсь, пока не нашел решение
Я меняю событие textbox с textBox1_textboxChange() на textbox1_keyup
и измените код на

private void textBox1_KeyUp(отправитель объекта, KeyEventArgs e)
{
int x = int. Parse(textBox1. Text) * 350;
textBox1. Text = конвертировать.ToString(x);
}


Рейтинг:
1

SurangiTi

Преобразуйте int в string перед тем, как назначить его свойству text-box Text.

textBox1.Text=x.ToString();


обратитесь к этому, чтобы узнать
Convert.ToString Method.


NebroProg

это дает ошибку

SurangiTi

в чем же ошибка?

SurangiTi

Я думаю, что вам не совсем ясно, чего вы хотите достичь.

Я предполагаю, что вы хотите умножить целое число, записанное в текстовое поле 1. Существует множество способов достижения этого результата, основанных на требовании.
Примеры
--------

1) Используйте текстовое поле и метку. [можно ввести только одну цифру]
2) Используйте текстовое поле и кнопку. [это идеальное решение]
3) есть много других способов...

В любом случае вам нужно проверить вводимые пользователем данные, иначе возникнут ошибки преобразования, и этого не избежать.

Рейтинг:
0

CPallini

Вы действительно должны использовать два текстовые поля: первое зарезервировано для ввода пользователем, а второе-для вывода вычислений.


NebroProg

я пробовал, но не получилось

Рейтинг:
0

radha patil

привет попробуй это
двойной результат=convert. double(textbox. text)*350;
текстовое поле.текст=результат.метод toString();