我有一个简单的按钮,点击它时应该将文本从帮助更改为隐藏和窗体大小。我遇到的问题是它无法找到if语句。它无法看到button3.text帮助或隐藏。有任何提示或建议吗?
private void button2_Click(object sender, EventArgs e)
{
string helpstring = "Help";
string hidestring = "Hide";
if (button3.Text == helpstring)
{
button3.Text = hidestring;
Size = new System.Drawing.Size(1106, 563);
}
if (button3.Text == "Hide")
{
Size = new System.Drawing.Size(586, 563);
button3.Text = helpstring;
}
}
答案 0 :(得分:5)
你忘了“别的”。这应该有效:
private void button2_Click(object sender, EventArgs e)
{
string helpstring = "Help";
string hidestring = "Hide";
if (button3.Text == helpstring)
{
button3.Text = hidestring;
Size = new System.Drawing.Size(1106, 563);
}
else if (button3.Text == "Hide") //this is where you should put an else
{
Size = new System.Drawing.Size(586, 563);
button3.Text = helpstring;
}
}
答案 1 :(得分:3)
看起来你的按钮错了。
处理程序名为button 2 _Click,但代码访问按钮 3 。
这就是始终命名控件的原因。
您的问题可能是 3 按钮的开头是Text
,Help
和Hide
。因此,if
语句都不会执行任何操作。
你应该在函数中设置一个断点(单击你的一行代码旁边的左边的栏),然后将鼠标移到button3.Text
上,看看它实际上等于什么。
但是,如果按钮的文本为Help
,则不会发生任何事情。正如manitra指出的那样,您没有else
子句。
因此,您的代码会看到按钮的文字为Help
,并将其更改为Hide
。
但是,下一个if
语句会看到该按钮的文字现在为Hide
,并会将其更改回Help
。
答案 2 :(得分:2)
你有两个并行的ifs。将执行第一个块,将按钮文本更改为“隐藏”。然后,第二个也将执行,将文本更改回“帮助”。
改为使用else块。
答案 3 :(得分:1)
为什么不在方法的开头设置一个断点,看看button3.Text的值是什么?
我的猜测是你的事件没有正确连接,代码甚至没有被激活。
答案 4 :(得分:1)
按钮文本中是否有&符号(例如&帮助或&隐藏),以便用户可以使用键盘快捷键?如果是这样,text属性将不相等。
答案 5 :(得分:1)
此代码存在一些问题。
首先,确保按钮的click事件正确挂钩到button2_Click
处理程序,因为方法名称和方法中引用的对象之间似乎存在一些差异。出于可读性的考虑,这些命名应该固定。
其次,您的代码使用两个if
语句,而不是if...else
语句。如果代码中的第一个条件为真,则第一个if
内的代码将导致第二个if
中的条件为真,从而将所有条件恢复为原始条件。
您的代码应该阅读(包括重命名您的方法):
private void button3_Click(object sender, EventArgs e)
{
string helpstring = "Help";
string hidestring = "Hide";
if (button3.Text == helpstring)
{
button3.Text = hidestring;
Size = new System.Drawing.Size(1106, 563);
}
else
{
Size = new System.Drawing.Size(586, 563);
button3.Text = helpstring;
}
}
注意:如果这是唯一的两个可能条件,则不需要第二个if
,简单else
将提高性能并达到预期效果。