【问题标题】:How to perform different logic based on checkbox being true or false?如何根据复选框的真假执行不同的逻辑?
【发布时间】:2009-12-29 03:36:36
【问题描述】:

我在一个表单中有两个部分(主要和次要),其中包含几个显示信息的文本框。在次要部分,我添加了一个复选框(选中时)我想将主要部分字段中的信息复制到次要部分的字段中。如果未选中,我希望它将该字段留空。

以下是一些示例代码,可帮助您了解我想要做什么:

CheckChanged 事件调用四种不同的方法(每个方法都包含特定复选框的逻辑):

    private void CheckBoxCheckedChanged(
    {
        Method1();
        Method2();
        Method3();
        Method4();
    }

当 Method4 被调用时,如果选中,我想处理上面提到的逻辑,如果没有,则留空。

    private void Method4()
    {
        if (checkBox4.Checked = true)
        {
            secondaryTextbox.Text = primaryTextbox.Text;
        }
        else if (checkBox4.Checked = false)
        {
            secondaryTextbox.Text = ""; 
        }

    }

我遇到的问题是,当我在选中复选框后执行此操作时,我无法再“取消选中”以将字段更改回空白。

我做错了什么,或者有更好的方法来解决这个问题?

如果我发错了,我提前道歉,这是我第一次使用 SO。

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    您编写的代码在 if 语句的表达式中进行了赋值 (=),但这不是您的意思。如果你想进行比较,你应该使用==。或者更好的是,只需这样做:

        if (checkBox4.Checked)
        {
            secondaryTextbox.Text = primaryTextbox.Text;
        }
        else
        {
            secondaryTextbox.Text = ""; 
        }
    

    正如 Paolo 指出的那样,您尝试的代码会发出编译器警告。如果您尝试从不编写产生警告的代码,您可以更快地捕捉到这样的简单错误。甚至还有一个选项可以将警告视为可以使用的错误。

    【讨论】:

    • +1。我认为 VS 在您明确的意思是 ==... 时,会在使用 = 时给您一个编译器警告?
    • 谢谢,我想这会很简单。并感谢下面所有其他人也回答了。
    • @Paolo - 确实如此。错误列表窗口中的绿色下划线和消息(假设您正在显示警告)
    【解决方案2】:

    你需要

    if (checkBox4.Checked == true)
    

    要检查是否为真,您的做法总是将其赋值为“真”

    【讨论】:

      【解决方案3】:

      当你打算测试时,你正在做作业

      使用这个

      if (checkBox4.Checked == false)
      

      或者更好

      if (false == checkBox4.Checked)
      

      甚至更好

      if ( ! checkBox4.Checked)
      

      而不是这个

      if (checkBox4.Checked = false)
      

      【讨论】:

        【解决方案4】:

        您的代码中有一个非常小的问题:

        您使用的是 = 而不是 ==

        也最好定义一个复选框和文本框数组,而不是 func1,func2,func3,func4

        【讨论】:

          【解决方案5】:

          您正在使用单个“=”来测试复选框是否被选中。 这具有设置复选框状态的效果。

          使用“==”,如

          if (checkBox4.Checked == true)
          

          或者事实上,更好:

          if (checkBox4.Checked)
          

          【讨论】:

          • 虽然在 C# 中使用“=”会导致编译器警告。
          猜你喜欢
          • 2023-01-08
          • 2023-02-10
          • 1970-01-01
          • 2016-09-01
          • 2017-10-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-18
          相关资源
          最近更新 更多