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

Arn*_*oyo 11 .net c# oop

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

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

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

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

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

Pyr*_*cer 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";
        }
    }
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.


小智 12

我可以看到几个可能的问题,并可以提供更面向对象的解决方案:添加一个跟踪当前"状态"的属性:

    private bool _IsOn;

    public bool IsOn
    {
        get
        {
            return _IsOn;
        }
        set
        {
            _IsOn = value;
            OrdersButton.Text = _IsOn ? "On" : "Off";
        }
    }
Run Code Online (Sandbox Code Playgroud)

并使用事件处理程序简单地切换属性:

private void OrdersButton_Click(object sender, EventArgs e)
{
     IsOn = !IsOn;
}
Run Code Online (Sandbox Code Playgroud)

这样,以后更容易访问信息,您可以轻松地用您喜欢的任何内容替换开/关 - 甚至可以根据需要进行全局化/本地化.我认为让代码依赖于显示器上的文本是一种非常糟糕的编程习惯......

编辑:此外,不会使用复选框或togglebutton更有意义?除了视觉表现形式不同之外,它可以实现您想要的开箱即用......

  • +1,并强烈同意您的编辑。更改标题的切换按钮是“糟糕”设计的臭名昭著的例子,因为它们会让用户感到困惑。很难知道当前是哪一种状态以及您要切换到哪一种状态——按钮所说的内容还是它“不”所说的内容。复选框是迄今为止更好的选择。请记住,复选框标题几乎总是应该使用积极的措辞,以避免产生双重否定。有关此问题的更多信息可以在我们的用户体验问答网站上找到。具体来说这个:http://ux.stackexchange.com/questions/1318/ (2认同)