Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 15.11.2013, 22:17   #11
TerraIn
Пользователь
 
Регистрация: 15.11.2013
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Обьясняю: Ты описываешь функцию calc(), которую вызываешь из всех обработчиков Эдитов кроме пятого. Она собирает данные со всех обработчиков, и если это возможно суммирует.

Это я понял.. Допустим я хочу ввести в первый TextBox = 100. Воожу 1, в итоговом тоже 1. Ввожу 0, в итоговом 1+10=11)) Я ввел 10 а в итоговом у меня уже 11. И т.д. Как быть?
TerraIn вне форума   Ответить с цитированием
Старый 15.11.2013, 22:26   #12
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

Изучить DataBinding + INotifyPropertyChanged, и не парится по пустякам
eval вне форума   Ответить с цитированием
Старый 15.11.2013, 22:28   #13
TerraIn
Пользователь
 
Регистрация: 15.11.2013
Сообщений: 10
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
Изучить DataBinding + INotifyPropertyChanged, и не парится по пустякам
Спасибо за ответ, попробую покопаться в этой области..
TerraIn вне форума   Ответить с цитированием
Старый 15.11.2013, 23:28   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Цитата:
Как быть?
Ты ввел 10 но не ввел 100. Что будет если закончишь вводить?
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 16.11.2013, 00:13   #15
TerraIn
Пользователь
 
Регистрация: 15.11.2013
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ты ввел 10 но не ввел 100. Что будет если закончишь вводить?
:Блин, было бы смешно, если бы не было так грустно...
TerraIn вне форума   Ответить с цитированием
Старый 16.11.2013, 17:36   #16
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% кнорр не ручаюсь, но смысл именно таков: Описать функу, которая будет вызываться отовсюду для единого расчета.
Дошел вот до такого решения:
Код:
int B=0, C=0, D=0;
        private void Form1_Load(object sender, EventArgs e)
        {
            //Задаю для всех текстбоксов один и тот же обработчик события.
            foreach (TextBox tb in this.Controls.OfType<TextBox>())
            {
                tb.KeyPress += new KeyPressEventHandler(tb_KeyPress);               
            }
        }
        //Сам обработчик события, позволя-й вводить только опред. символы
        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_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (textBox1.Text == "" || textBox1.Text == "-")
                B = 0;
            else
                B = Convert.ToInt32(textBox1.Text);
        }
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if (textBox1.Text == "" ||
                textBox5.Text == "" ||
                textBox5.Text == "-" ||
                textBox1.Text == "-")
            {
                if (textBox5.Text != "")
                {
                    textBox5.Text = Convert.ToString(Convert.ToInt32(textBox5.Text) - B);
                    return;
                }
                textBox5.Text = textBox1.Text;
                return;
            }
            C = Convert.ToInt32(textBox1.Text);
            D = C - B;
            textBox5.Text = Convert.ToString(Convert.ToInt32(textBox5.Text) + D);
        }
Как мне теперь оформить все в один блок, что бы не расписывать одно и то же для каждого textBoxa? И как можно запретить ввод еще одного знака минус в один и тот же textBox и как разрешить его ввод только в начале строки?

Последний раз редактировалось TerraIn; 16.11.2013 в 17:42.
TerraIn вне форума   Ответить с цитированием
Старый 16.11.2013, 18:46   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Насчет оформления я пример с функцией дал.
Насчет запрещения у тебя уже есть пример с e.Handled.
Не понимаю что тут сложного? Ты же сам все и написал уже.
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Ответ
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Суммирование данных после фильтрации 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 21:27
Выбор данных и суммирование rus_75 Microsoft Office Excel 6 28.02.2009 17:30