Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2013, 11:52   #1
TerraIn
Пользователь
 
Регистрация: 15.11.2013
Сообщений: 10
По умолчанию Суммирование данных в TextBox

Доброго времени суток всем). Вопрос такой. В 4 textbox-aх можно вводить числовые данные. В 5-м отображается сумма остальных 4-х, при чем сразу. Пример: ввожу 2 в первый textbox и тут же эта 2 появляется в пятом textbox-е. Потом ввожу 3 в том же первом textboxе( получается уже 23) тут же получаю такой же результат и в пятом textbox-е. Потом ввожу данные во второй textbox, допустим 4 и эта цифра тут же суммируется в пятом textbox-е (результат равен 27) Потом в первом textbox-е Backspac-ом удаляю 3(там остается сумма =2), в пятом textbox-е сумма выравнивается на 6 и т.д. Да и вводить можно знак минус только один раз и в начале числовых данных. Как это можно сделать? В бейсике получилось, а в С# ну ни как не получается.. Помогите пожалуйста)
TerraIn вне форума Ответить с цитированием
Старый 15.11.2013, 12:12   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а в С# ну ни как не получается.
Показывай как пробовал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.11.2013, 12:20   #3
TerraIn
Пользователь
 
Регистрация: 15.11.2013
Сообщений: 10
По умолчанию

Вот так вот делал в бейсике для каждого TextBox, кроме того где выводится сумма
Код:
Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
        Static A, B As Long
        If TextBox2.Text = "" Then
            TextBox1.Text = Val(TextBox1.Text) - Val(A)
            A = 0
            Exit Sub
        End If
        A = Val(TextBox2.Text) - Val(A)
        B = Val(TextBox1.Text) + A
        TextBox1.Text = B
        A = Val(TextBox2.Text)
    End Sub


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 15.11.2013 в 13:20.
TerraIn вне форума Ответить с цитированием
Старый 15.11.2013, 12:24   #4
TerraIn
Пользователь
 
Регистрация: 15.11.2013
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Показывай как пробовал.
Я не программист, извините если не четко ставлю вопросы или отвечаю, только начинаю
TerraIn вне форума Ответить с цитированием
Старый 15.11.2013, 13:15   #5
TerraIn
Пользователь
 
Регистрация: 15.11.2013
Сообщений: 10
По умолчанию

[SIZE="1"]
Цитата:
Сообщение от Stilet Посмотреть сообщение
Показывай как пробовал.
Вот как пробую в С#

Код:
int A = 0;
        private void Form1_Load(object sender, EventArgs e)
        {
            //Задаю для всех текстбоксов один и тот же обработчик события.
            foreach (TextBox tb in this.Controls.OfType<TextBox>())
            {
                tb.KeyPress += new KeyPressEventHandler(tb_KeyPress);
                //tb.TextChanged+=new EventHandler(tb_TextChanged);
            }
        }
        //Сам обработчик события, позволя-й вводить только опред. символы
        void tb_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!(Char.IsDigit(e.KeyChar))//Разрешаю вводить только десятичные цифры
                && (e.KeyChar != 45)//Разрешаю ввод "-"
                && (e.KeyChar != (char)Keys.Back))//Разрешаю ввод Backspace
                e.Handled = true;
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {           
            if (textBox1.Text == "" || textBox5.Text == ""||textBox5.Text == "-")
                {
                    textBox5.Text = textBox1.Text;                   
                    //A = Convert.ToInt32(textBox5.Text);
                return;
                }
      A = Convert.ToInt32(textBox5.Text); 
      A = A - Convert.ToInt32(textBox1.Text);//вычисляю разницу txt1 и txt5
      textBox5.Text = Convert.ToString(Convert.ToInt32(textBox5.Text) - A);
       A = Convert.ToInt32(textBox5.Text);
        }
        
        private void textBox2_TextChanged(object sender, EventArgs e)
        {
          if (textBox2.Text == "" || textBox5.Text == "" || textBox5.Text == "-")
        {
                textBox5.Text = textBox2.Text;
                //A = Convert.ToInt32(textBox5.Text);
                return;
         }
        A = Convert.ToInt32(textBox5.Text);
        A = Convert.ToInt32(textBox2.Text)-A;//вычисляю разницу txt1 и txt5
        textBox5.Text = Convert.ToString(Convert.ToInt32(textBox5.Text) + A);
        A = Convert.ToInt32(textBox5.Text);
        }
    }
}
Если с первым textBox-сом еще все нормально, то со вторым полная ерунда получается..



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 15.11.2013 в 13:20.
TerraIn вне форума Ответить с цитированием
Старый 15.11.2013, 14:08   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Действительно эрунда )
Короче опиши функу:
Код:
private void calc(){
 try{
     A = Convert.ToInt32(textBox1.Text); 
     B = Convert.ToInt32(textBox2.Text); 
     C = Convert.ToInt32(textBox3.Text); 
     D = Convert.ToInt32(textBox4.Text); 
     E = Convert.ToInt32(textBox5.Text); 
   int s=A+B+C+D+E;
   textBox5.Text=s.ToString();
 } catch (FormatException e) {
   textBox5.Text="В эдиты введено не число"
 }
}
И помести ее в
Код:
        private void textBox2_TextChanged(object sender, EventArgs e)
        {
 calc();
        }
Я с потолка пишу, так что за 100% кнорр не ручаюсь, но смысл именно таков: Описать функу, которая будет вызываться отовсюду для единого расчета.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.11.2013, 21:39   #7
TerraIn
Пользователь
 
Регистрация: 15.11.2013
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Действительно эрунда )
Короче опиши функу:
Код:
private void calc(){
 try{
     A = Convert.ToInt32(textBox1.Text); 
     B = Convert.ToInt32(textBox2.Text); 
     C = Convert.ToInt32(textBox3.Text); 
     D = Convert.ToInt32(textBox4.Text); 
     E = Convert.ToInt32(textBox5.Text); 
   int s=A+B+C+D+E;
   textBox5.Text=s.ToString();
 } catch (FormatException e) {
   textBox5.Text="В эдиты введено не число"
 }
}
И помести ее в
Код:
        private void textBox2_TextChanged(object sender, EventArgs e)
        {
 calc();
        }
Я с потолка пишу, так что за 100% кнорр не ручаюсь, но смысл именно таков: Описать функу, которая будет вызываться отовсюду для единого расчета.
Спасибо за помощь, но этот варриант не подходит. В моем случае, в итоговом textBox-е(в 5-м), сумма изменяется в момент наступления события - изменение textBox.text в любом из остальных textBox-сов(1,2,3,4). По-этому я и стараюсь код всунуть в textBox(1,2,3,4)_TextChanged. Суть, я заполняю textBox-сы(1,2,3,4) суммами, при этом эти суммы автоматически слаживаются в Итоговом textBox-е(5), я могу откорректировать любой из textBox-ов(1,2,3,4) и автоматически откорректируется Итоговый textBox. В программе будет предусмотренна кнопка, после нажатия которой, откорректированные суммы добавятся к другим суммам. Я только начинаю программировать и может не вижу более легкого решения... Если у вас есть варианты, напишите пожалуйста код.
TerraIn вне форума Ответить с цитированием
Старый 15.11.2013, 21:50   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
этот варриант не подходит
Ты внимательно читал что я предлагаю? Ты понял мою идею?
Впрочем как хочешь. Я свое мнение выразил.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.11.2013, 21:58   #9
TerraIn
Пользователь
 
Регистрация: 15.11.2013
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ты внимательно читал что я предлагаю? Ты понял мою идею?
Впрочем как хочешь. Я свое мнение выразил.
Я еще раз извиняюсь.. Я не понял твою идею наверное.. Объясни пажалуйста по-подробней
TerraIn вне форума Ответить с цитированием
Старый 15.11.2013, 22:02   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Обьясняю: Ты описываешь функцию calc(), которую вызываешь из всех обработчиков Эдитов кроме пятого. Она собирает данные со всех обработчиков, и если это возможно суммирует.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Суммирование данных после фильтрации PECTABPATOP Microsoft Office Excel 4 30.12.2012 11:49
Суммирование строковых данных Лубышев SQL, базы данных 7 01.11.2011 23:51
Суммирование данных ВПР iGremlin Microsoft Office Excel 9 15.08.2011 14:28
Суммирование значение textbox в форме! Punker1 Microsoft Office Excel 7 05.02.2010 20:27
Выбор данных и суммирование rus_75 Microsoft Office Excel 6 28.02.2009 16:30