none
Сложение N количества textbox RRS feed

  • Вопрос

  • Добрый день!

    Вкратце : есть программа которая создает n количество textbox(n вводится с клавиатуры). Нужно сложить эти textbox и вывести ответ. Обыскал все форумы, а даже похожего ничего не нашел. Фишка в том, что textbox появляются в ходе работы программы и заранее  обозначить textbox я не могу. Помогите чем можете.

Ответы

Все ответы

  • decimal sum=0.0M;
    
    foreach(Control x in myContainer.Controls)
    {
    	if(x is TextBox)sum+=Convert.ToDecimal((x as TexBox).Text);
    }



  • decimal sum=0.0M;
    
    foreach(Control x in myContainer.Controls)
    {
    	if(x is TextBox)sum+=Convert.ToDecimal((x as TexBox).Text);
    }



    Vadim, не могли бы вы поподробнее рассказать как мне это использовать? Просто я не очень понял

  • Вам нужно заменить myContainer на название контейнера, в котором лежат ваши TextBox, и разместить этот код в каком-либо обработчике события.
  • Вам нужно заменить myContainer на название контейнера, в котором лежат ваши TextBox, и разместить этот код в каком-либо обработчике события.

    Я все поменял, но когда я пытаюсь вывести ответ на panel он не может тип  decimal перевести в string. Что можно сделать?

    private void button2_Click(object sender, EventArgs e)
            {
                decimal sum = 0.0M;
    
                foreach (Control x in panel1.Controls)
                {
                    if (x is TextBox) sum += Convert.ToDecimal((x as TextBox).Text);
                }
                panel2.Text = sum;
            } 

  • Тут все просто: sum.ToString();
  • Тут все просто: sum.ToString();

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

    С чем это может быть связано? Если что могу прислать весь кусок кода.

  • Тут все просто: sum.ToString();

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

    С чем это может быть связано? Если что могу прислать весь кусок кода.

    Все заработало. Я просто выводил в panel. Попробовал вывести в label и все получилось.Еще раз огромное спасибо!!!
  • Vadim, извините меня пожалуйста, я вам уже, наверное, надоел. У меня последний вопрос. Как мне суммировать и выводить только те числа, которые делятся на 5 и не делятся на 7? Очень меня выручите. Спасибо.
  • Находя остаток от целочисленного деления. (Поменяйте везде Decimal на int если у вас работа только с целыми числами.)

    int num = Convert.ToInt32((x as TextBox).Text);

    if( num % 5 == 0 ) {/*число делится на 5*/}

    else {/*число не делится на 5*/}



    • Изменено VadimTagil 31 мая 2017 г. 17:16
  • Находя остаток от целочисленного деления. (Поменяйте везде Decimal на int если у вас работа только с целыми числами.)

    int num = Convert.ToInt32((x as TextBox).Text);

    if( num % 5 == 0 ) {/*число делится на 5*/}

    else {/*число не делится на 5*/}



    Смотрите, я попробовал и получается так, что он мне выдает последнее число в textbox. У меня должно работать так

    А получается так

    Вот скрипт к 2 картинке и я не могу понять почему он не хочет работать так, как надо...

                foreach (Control x in panel1.Controls)
                {
                    int sum = Convert.ToInt32((x as TextBox).Text);
                    if (sum % 5 == 0) {/*число делится на 5*/}
                    else {/*число не делится на 5*/}
                    label3.Text = sum.ToString();
    

    Может быть я тормоз, но я не могу в этом разобраться.

  • Находя остаток от целочисленного деления. (Поменяйте везде Decimal на int если у вас работа только с целыми числами.)

    int num = Convert.ToInt32((x as TextBox).Text);

    if( num % 5 == 0 ) {/*число делится на 5*/}

    else {/*число не делится на 5*/}



    Смотрите, я попробовал и получается так, что он мне выдает последнее число в textbox. У меня должно работать так

    А получается так

    Вот скрипт к 2 картинке и я не могу понять почему он не хочет работать так, как надо...

                foreach (Control x in panel1.Controls)
                {
                    int sum = Convert.ToInt32((x as TextBox).Text);
                    if (sum % 5 == 0) {/*число делится на 5*/}
                    else {/*число не делится на 5*/}
                    label3.Text = sum.ToString();

    Может быть я тормоз, но я не могу в этом разобраться.

    Я пытался сделать это так, но опять не вышло

    int k = 0;
                    int c = 0;
                    int sum = Convert.ToInt32((x as TextBox).Text);
                    if ((sum % 5 == 0) && (sum % 7 != 0))
                        {
                            k++;
                            c += sum;
                        }
                        else {/*число не делится на 5*/}
                    label3.Text = sum.ToString();

  •  

    Условие нужно вставить внутрь цикла, а вывод значения - после него. Наверное, вам нужно почитать учебные материалы, если вы принципы построения программы не понимаете. А не спрашивать каждый раз на форуме.

    int sum=0;
    int num;
     foreach (Control x in panel1.Controls)
     {
       if(x is TextBox)
       {
         num = Convert.ToInt32((x as TextBox).Text);
         if (num % 5 == 0 && num % 7 != 0) {sum+=num;}   
       }
     }
    label3.Text = sum.ToString();


  •  

    Условие нужно вставить внутрь цикла, а вывод значения - после него. Наверное, вам нужно почитать учебные материалы, если вы принципы построения программы не понимаете. А не спрашивать каждый раз на форуме.

    int sum=0;
    int num;
     foreach (Control x in panel1.Controls)
     {
       if(x is TextBox)
       {
         num = Convert.ToInt32((x as TextBox).Text);
         if (num % 5 == 0 && num % 7 != 0) {sum+=num;}   
       }
     }
    label3.Text = sum.ToString();


    Спасибо вам огромное! Я студент 1 курса, из-за этого многого не знаю. Но благодаря вам, есть ориентир куда нужно стремиться)))