Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Реакция на изменение текста


Автор: Abbath1349 10.3.2011, 20:14
У меня такая проблема программа выполняет операции с цифрами вводимыми в текстбокс, но когда изменяю текст он работает только с новыми числами. Как мне этого избежать? возможно ли убрать стирание строки в другое место?

Код

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int digit_summ,adddigits;
        string numbers;
        private void button1_Click(object sender, EventArgs e)
        {
            label1.Text = "quantity numbers are: "+digit_summ.ToString()+
                "\nNumbers: "+numbers+"\nsumm numbers is "+adddigits;
          
            digit_summ = 0;
            numbers = "";
            //textBox1.Text = "";
            adddigits = 0;
        }

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
 
            if (Char.IsDigit(e.KeyChar))
            {
                digit_summ++;
                numbers += e.KeyChar;
                string st= e.KeyChar.ToString();
                adddigits += Convert.ToInt32(st);
             
            }
        }

Автор: Экскалупатор 10.3.2011, 23:35
Код

string st= e.KeyChar.ToString();
                adddigits += Convert.ToInt32(st);


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

Автор: Abbath1349 11.3.2011, 18:24
А поподробнее? я не совсем понял.

Автор: Экскалупатор 11.3.2011, 22:27
что именно не понятно? опиши задачу нормально тогда будем смотреть как решать

Автор: Abbath1349 12.3.2011, 07:31
Цитата(Экскалупатор @  11.3.2011,  22:27 Найти цитируемый пост)
что именно не понятно? опиши задачу нормально тогда будем смотреть как решать 

Да задача в выполнении операции с числами вводимых в textbox непонятно как там коллецией/списком сделать

Автор: Экскалупатор 12.3.2011, 08:37
не знаю что там у тебя написано, но в общем виде должно быть что то вроде этого:
создаешь коллекцию/список/массив
по событию добавляешь в него новый элемент, тот что ввел пользователь, при этом естественно что все что было введено раньше сохранится
потом обрабатываешь эту коллекцию.

Цитата(Abbath1349 @  10.3.2011,  19:14 Найти цитируемый пост)
               
 numbers += e.KeyChar;
                string st= e.KeyChar.ToString();
                adddigits += Convert.ToInt32(st);

из твоего кода можно предположить что для хранения того что ввел пользователь у тебя используется numbers. но почему строка? вот это лучше заменить на какой нибудь List<T>(ну или хотя бы на StringBuilder), потом, я не знаю что делает метод adddigit, но ты всегда передаешь в него только последнее введенное значение. я так понимаю что тебе нужно использовать не числа а цифры(2, 5, 6, 7 - это цифры, а 44, 20, 10, 29, 100, etc - это числа), потому что в метод ты передаешь только  e.KeyChar, т.е. только то что нажал пользователь последним. какая задача у тебя стоит, можешь четко сформулировать что должно происходить?

Автор: Abbath1349 12.3.2011, 20:18
user posted image
Ну воощем на форме в textbox вводятся данные пользователем неважно числа текст или вперемешку при нажатии на кнопку ок в label1 Выводится количество чисел, числа, их сумма (adddigits),и максимальное число из введённых.

Автор: Экскалупатор 12.3.2011, 21:48
Abbath1349, ээээ, мой моск сча взорвется, зачем тебе тогда событие textBox1_KeyPress? по нажатию на кнопку бери строку которая получается в текстбоксе и считай все что тебе надо, зачем усложнять себе жизнь?

Автор: Abbath1349 13.3.2011, 07:58
А хз я щас так и сделал уже)))Просто первое в голову пришло keypress.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)