单击后更改按钮文本,然后再次单击后将其更改回来

时间:2013-03-14 03:03:15

标签: c# .net oop

我试图在每次点击按钮时更改按钮的文本。

按钮开始为“ON”。当我第一次点击它时它应该变为“OFF”,当我再次点击它时,它应该变回On。

我了解如何在点击时将其更改为“关闭”,但我不确定如何检查次要点击,以便我可以将文本更改回“开启”。

到目前为止,这是我的代码:

private void OrdersButton_Click(object sender, EventArgs e)
{
       OrdersButton.Text = " Turn Orders Off";
}

6 个答案:

答案 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}}属性,因为:

  1. 它存储在按钮的变量中。您不需要任何外部变量
  2. 所有代码都可以用单一方法编写
  3. 您始终可以从其他方法\ controls
  4. 访问它

    以下是示例代码:

    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";
    }
}