Добавлять в int каждый раз, когда нажимается кнопка, и показывать в текстовом поле С#

Я очень новичок в программировании, и я пытаюсь сделать так, чтобы каждый раз, когда вы нажимаете кнопку, она добавляла единицу к значению int и отображала его в текстовом поле. Мой код:

private void button1_Click(object sender, EventArgs e)
{
    int a = 100;
    a++;

    txtBox1.Text = a.ToString();
}

Поэтому, когда я нажимаю кнопку, она отображается в текстовом поле 101, но когда я нажимаю ее снова, я хочу, чтобы в текстовом поле отображались 102 и 103 и т. д. Есть идеи? Я предполагаю, что это очень просто и использует некоторые варианты цикла, но я пробовал несколько вещей, и ничего не работает. Любые советы будут очень признательны! Спасибо.


person dcolton147    schedule 07.02.2013    source источник


Ответы (7)


Вы должны хранить свое значение вне тела метода.

private int a = 100;

private void button1_Click(object sender, EventArgs e)
{        
     a++;

      txtBox1.Text = a.ToString();
}

Что вы делали в своей программе, так это то, что каждый раз, когда вы нажимали кнопку, новое целое число a объявлялось со значением 100, затем вы увеличивали его на 1, и поэтому вы всегда видели «101».

person gzaxx    schedule 07.02.2013
comment
Спасибо большое!! Теперь это кажется довольно простым! :) - person dcolton147; 07.02.2013

В своем коде вы делите a и присваиваете ему значение снова и снова каждый раз, когда вы нажимаете кнопку.

Вы должны объявить переменную вне метода button1_Click:

class Window1
{
    int a = 100;
    ....
    private void button1_Click(object sender, EventArgs e)
        {
            a++;
            txtBox1.Text = a.ToString();
        }
}
person Andrey Gordeev    schedule 07.02.2013

Вам нужно объявить a членом класса, содержащего ваш метод:

private int _a = 100;

private void button1_Click(object sender, EventArgs e)
{
    _a++;

    txtBox1.Text = _a.ToString();
}

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

person Daniel Hilgarth    schedule 07.02.2013

Можно не создавать глобальные поля и хранить количество кликов внутри текстового поля. Это особенно удобно, если у вас несколько кнопок.

private void button1_Click(object sender, EventArgs e)
    {     
        if (txtBox1.Tag is int)
        {
            int a = (int)txtBox1.Tag;
            a++;

            txtBox1.Tag = a;

            txtBox1.Text = a.ToString();
        }
        else
        {
            txtBox1.Tag = 100;
            txtBox1.Text = 100;
        }
}
person algreat    schedule 07.02.2013

int a = 100;
txtBox1.Text = a.ToString();
  ......

private void button1_Click (отправитель объекта, EventArgs e) {

    a++;

   txtBox1.Text = a.ToString();
}
person Igoy    schedule 07.02.2013

Размещение int a = 100; внутри button1_Click(object sender, EventArgs e) установит a на 100 при каждом выполнении функции time. Если вам нужно, чтобы счетчик поместил его вне функции (тогда он будет инициализирован только один раз) и увеличит его при выполнении функции.

Решение

int a = 100;
private void button1_Click(object sender, EventArgs e)
{        
    a++;

    txtBox1.Text = a.ToString();
}
person New Developer    schedule 07.02.2013

если вы хотите оптимизировать свой код, сначала установите свойство текстового поля text = 100 и напишите только один код строки в событии нажатия кнопки

private void button1_Click(object sender, EventArgs e)
{            
    txtBox1.Text = (Convert.ToInt32(txtBox1.Text) + 1).ToString();
}

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

person Minhaj Patel    schedule 09.06.2017