【问题标题】:Save info if one switch is toggled如果切换一个开关,则保存信息
【发布时间】:2019-01-14 18:17:44
【问题描述】:

如果任一开关被切换,我正在尝试显示显示警报。

这是我的 if 语句:

 if(!SwitchOne.IsToggled || !SwitchTwo.IsToggled)
        {
            await DisplayAlert("Cannot save", "Enter info.", "Ok");
        }

我希望在切换 1 个或两个开关时保存信息。但是,它似乎并不关心 ||在 if 语句中。当我切换两个开关时,我能够保存页面并且 DisplayAlert 不显示 = 很好。当我只切换一个开关时,DisplayAlert 会显示。我不明白为什么,因为我有||在 if 语句中。

如果我切换任何开关,我不希望 DisplayAlert 显示。 感谢我能得到的所有帮助!

【问题讨论】:

  • 我认为你想要 XOR,而不是 OR。
  • 您所描述的情况需要使用 &&。
  • 不,我想要要么。不是都。 @CodePope
  • true || false == true, true && false == false。你想要哪一个..?请记住,您的条件是测试开关是否 切换(这使得它有点混乱)。但最后你希望它读到,“如果开关一未切换且开关二未切换,则无法保存”

标签: c# xamarin xamarin.forms


【解决方案1】:

对于您的情况,您需要使用&&:

if(!SwitchOne.IsToggled && !SwitchTwo.IsToggled)
        {
            await DisplayAlert("Cannot save", "Enter info.", "Ok");
        }

现在它只会在两个开关都没有切换时才会显示警报。如果其中任何一个被切换,则不会立即显示警报。

 switch1 == toggled | switch2 == toglled
        true        |       true            =>      Do not show alert
        true        |       false           =>      Do not show alert
        false       |       true            =>      Do not show alert
        false       |       false           =>      show alert

【讨论】:

  • 我也需要在仅切换一个开关时显示警报。 @CodePope
  • @KalleP 在问题中您说“我希望在切换 1 个或两个开关时保存信息。”。现在你说的正好相反。我理解正确吗?
  • 对不起,我误会了。它工作得很好,非常感谢! @CodePope
  • @IvanIčin,如果您阅读他的问题和我要问的观点,您会发现存在矛盾。我的回复也得到了另外两个人的证实。您的评论粗鲁无礼,违反了 stackoverflow 的规则。请尊重。
【解决方案2】:

你可以这样做

if (!SwitchOne.IsToggled && !SwitchTwo.IsToggled)

如果只切换了一个开关(例如,SwitchOne),它将评估为:

if (!true && !false) => if (false & true) => if (false)

【讨论】:

    【解决方案3】:

    您正在检查开关是否关闭,因此很明显,如果只有一个开关关闭,它将显示消息,如果两者都不是,则不会...您应该:

    if(SwitchOne.IsToggled || SwitchTwo.IsToggled)
        {
            await DisplayAlert("Cannot save", "Enter info.", "Ok");
        }
    

    【讨论】:

      【解决方案4】:

      如果您颠倒一切,可能会更容易阅读,因为现在您正在测试否定响应的否定条件(如果未切换开关 1 且未切换开关 2,则我们无法保存),这有时可能会让人难以阅读。

      这可能更具可读性:

      if (SwitchOne.IsToggled || SwitchTwo.IsToggled)
      {
          // At least one switch is toggled - we can save! 
      }
      else
      {
          await DisplayAlert("Cannot save", "Enter info.", "Ok");
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-22
        • 1970-01-01
        • 1970-01-01
        • 2021-12-01
        • 2021-10-02
        • 2018-09-11
        • 1970-01-01
        • 2022-11-18
        相关资源
        最近更新 更多