在C#中更改label.text

时间:2017-04-27 09:18:41

标签: c#

我是C#的新手。我试图显示点击按钮的次数,这是我的代码:

private void ClickMebutton_Click(object sender, EventArgs e)
{
      int i = 0;     
      while (true)    
       {              
         label1.Text = i.ToString();
         i += 1;   
       }
}

代码运行正常,但是当我点击按钮时,label.text没有改变。我也无法通过使用断点来识别任何问题。 有人可以帮帮我吗?

4 个答案:

答案 0 :(得分:3)

int i = 0; // 1

private void ClickMebutton_Click(object sender, EventArgs e)
{
    i++; // 3
    label1.Text = i.ToString();
}

评论:

  1. 将计数器存储在事件处理程序主体之外。否则,每次单击按钮时,它将重置为0。您还可以解析标签文本,而不是在类字段中存储计数器。
  2. 删除无限循环
  3. 在分配文本之前递增计数器。否则,首次点击后您将获得0
  4. 解析标签文字的解决方案:

    请注意,您最初应将标签文字设置为"0"。在设计师中做到这一点。因此,在应用程序启动后,标签将显示正确的信息 - 按钮被单击零次。

    private void ClickMebutton_Click(object sender, EventArgs e)
    {
        int i = Int32.Parse(label1.Text);
        i++;
        label1.Text = i.ToString();
    }
    

答案 1 :(得分:2)

你应该公开定义

 private int i = 0;     
private void ClickMebutton_Click(object sender, EventArgs e)
{

     i++;          
     label1.Text = i.ToString();


 }

答案 2 :(得分:2)

似乎它没有改变,因为你在这里有一个无限循环:

 while (true)

如果您将断点放在 spot 上,那么您只是循环并循环,这就是您无法看到更改的原因。这个:

int i = 0;

一个全局变量,并删除你的逻辑上不需要的无限循环:

private int i = 0;     
private void ClickMebutton_Click(object sender, EventArgs e){   

  i++;
  label1.Text = i.ToString();
 }

答案 3 :(得分:1)

删除无限循环1),但将label1.Text添加到private void ClickMebutton_Click(object sender, EventArgs e) { int value; if (int.TryParse(label1.Text, out value)) label1.Text = (value + 1).ToString(); else label1.Text = "1"; }

private void ClickMebutton_Click(object sender, EventArgs e) {
  label1.Text = (int.TryParse(label1.Text, out var value) ? value + 1 : 1).ToString();
}

如果是 C#7.0 + ,你可以把它更简洁,但不太可读:

{{1}}