我试图在每次点击按钮时更改按钮的文本。
按钮开始为“ON”。当我第一次点击它时它应该变为“OFF”,当我再次点击它时,它应该变回On。
我了解如何在点击时将其更改为“关闭”,但我不确定如何检查次要点击,以便我可以将文本更改回“开启”。
到目前为止,这是我的代码:
private void OrdersButton_Click(object sender, EventArgs e)
{
OrdersButton.Text = " Turn Orders Off";
}
答案 0 :(得分:15)
尝试
private void OrdersButton_Click(object sender, EventArgs e)
{
if (OrdersButton.Text == "Turn Orders On")
{
OrdersButton.Text = "Turn Orders Off";
}
else if (OrdersButton.Text == "Turn Orders Off")
{
OrdersButton.Text = "Turn Orders On";
}
}
希望这有帮助。
答案 1 :(得分:11)
我可以看到几个可能的问题,并可以提供更面向对象的解决方案: 添加一个跟踪当前“状态”的属性:
private bool _IsOn;
public bool IsOn
{
get
{
return _IsOn;
}
set
{
_IsOn = value;
OrdersButton.Text = _IsOn ? "On" : "Off";
}
}
并使用事件处理程序简单地切换属性:
private void OrdersButton_Click(object sender, EventArgs e)
{
IsOn = !IsOn;
}
通过这种方式,以后可以更轻松地访问信息,您可以轻松地用您喜欢的任何内容替换开/关 - 甚至可以根据需要进行全局化/本地化。我认为让代码依赖于显示器上的文本是一种非常糟糕的编程习惯......
编辑:另外,不会使用复选框或togglebutton更有意义吗?除了视觉表现不同之外,它可以开箱即用......答案 2 :(得分:3)
只测试当前文字:
OrdersButton.Text = OrdersButton.Text.EndsWith("Off") ? "Turn Orders On" : "Turn Orders Off";
编辑:正如Cody在下面的评论中指出的那样,本地化并不适用。对于可以更容易本地化的东西,使用ViewState(假设初始文本是打开订单):
bool ordersWereOn = (ViewState["OrdersAreOn"] as bool?) ?? false;
ViewState["OrdersAreOn"] = !ordersWereOn;
OrdersButton.Text = ordersWereOn ? "Turn Orders On" : "Turn Orders Off";
答案 3 :(得分:1)
请创建一个简单的按钮。双击按钮,将自动生成以下代码。
编写这个简单的代码并运行它.....
看到魔法它真的会起作用......
private void button5_Click(object sender, EventArgs e)
{
if (button5.Text == "Pause")
{
button5.Text = "Resume";
label1.Text = "Yes Pause";
}
else
{
button5.Text = "Pause";
label1.Text = "Yes Resume";
}
}
请您有任何疑问请与我联系....
联络电话:9096713970 ......
答案 4 :(得分:0)
有很多方法可以做到这一点
至于我,我可能会使用Tag
的{{1}}属性,因为:
以下是示例代码:
Control
您也可以设置默认private void OrdersButton_Click(object sender, EventArgs e)
{
bool value = (OrdersButton.Tag as bool?) ?? true;
OrdersButton.Tag = !value;
OrdersButton.Text = "Turn Orders " + (value ? "On" : "Off");
}
值(true或false)并删除对空值的检查。
您也将始终以这种方式访问它:
Tag
这不是最好的方法 - 它只是另一种方法 例如, Roman Gruber 可能使用封装在setter中的文本更改逻辑的属性显示了最佳答案。
答案 5 :(得分:0)
private void button4_Click(object sender, EventArgs e)
{
if (button4.Text == "Show Password")
{
textBox2.PasswordChar = '\0';
button4.Text = "Hide Password";
}
else
{
textBox2.PasswordChar = '*';
button4.Text = "Show Password";
}
}