你好,我有简单的代码,想对标签进行一键控制:
private void button1_Click(object sender, EventArgs e)
{
bool T=true;
if (T)
{
label1.Text = "GOOD";
T=false;
}
else if(!T){
label1.Text = "BAD";
T=true;
}
}
问题在于,每当我按下按钮时,它就声明为true,并且每次都为true。我不能这样声明
bool T;
因为出现错误:
CS0165使用未分配的本地变量'T'WindowsFormsApp1
如何声明一次?
答案 0 :(得分:0)
当您要在某些状态和未点击状态之间切换时,您需要在类中的成员,而不是仅在方法中存在的变量:>
class MyClass
{
bool foo;
private void button1_Click(object sender, EventArgs e)
{
if (this.foo)
{
label1.Text = "GOOD";
this.foo=false;
}
else
{
label1.Text = "BAD";
this.foo = true;
}
}
}
还要注意,我省略了else if
,因为布尔只能有两个状态:true
或false
。没有第三种条件。因此,不与第一个条件不匹配的所有内容都将自动与第二个条件匹配,您无需(再次)测试bool值。
答案 1 :(得分:0)
如果要将label1.Text
从GOOD
切换到BAD
,可以尝试使用简单的转向运算符:
private void button1_Click(object sender, EventArgs e)
{
label1.Text = string.Equals("GOOD", label1.Text, StringComparison.OrdinalIgnoreCase)
? "BAD"
: "GOOD";
}
如果您想要更详尽的解决方案,让我们提取属性,例如:
public bool IsGood {
get {
// Simplest implementation; often adding a backing field is a good idea
return label1.Text = string
.Equals("GOOD", label1.Text, StringComparison.OrdinalIgnoreCase);
}
set {
label1.Text = value ? "GOOD" : "BAD";
}
}
然后点击事件
private void button1_Click(object sender, EventArgs e) {
IsGood = !IsGood;
}