我是C#的新手。我试图显示点击按钮的次数,这是我的代码:
private void ClickMebutton_Click(object sender, EventArgs e)
{
int i = 0;
while (true)
{
label1.Text = i.ToString();
i += 1;
}
}
代码运行正常,但是当我点击按钮时,label.text没有改变。我也无法通过使用断点来识别任何问题。 有人可以帮帮我吗?
答案 0 :(得分:3)
int i = 0; // 1
private void ClickMebutton_Click(object sender, EventArgs e)
{
i++; // 3
label1.Text = i.ToString();
}
评论:
0
。您还可以解析标签文本,而不是在类字段中存储计数器。0
解析标签文字的解决方案:
请注意,您最初应将标签文字设置为"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}}