如何基于复选框为true或false执行不同的逻辑?

时间:2009-12-28 18:59:23

标签: c# winforms

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

以下是一些示例代码,可帮助您查看我要执行的操作:

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。

5 个答案:

答案 0 :(得分:4)

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

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

Paolo指出您尝试的代码会给出编译器警告。如果您尝试永远不会编写产生警告的代码,您可以更快地捕获这样的简单错误。甚至可以选择将警告视为可以使用的错误。

答案 1 :(得分:2)

你需要

if (checkBox4.Checked == true)

检查是否为真,你这样做的方式总是给它赋值“true”

答案 2 :(得分:1)

当您打算进行测试时,您正在执行任务

使用此

if (checkBox4.Checked == false)

或更好的

if (false == checkBox4.Checked)

甚至更好

if ( ! checkBox4.Checked)

而不是

if (checkBox4.Checked = false)

答案 3 :(得分:1)

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

您使用 = 而不是 ==

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

答案 4 :(得分:0)

您正在使用单个“=”来检查复选框。 这具有设置复选框状态的效果。

使用“==”,如

if (checkBox4.Checked == true)

或者事实上,更好:

if (checkBox4.Checked)