【问题标题】:Force Checkbox to be Checked强制复选框被选中
【发布时间】:2013-02-12 17:38:07
【问题描述】:

我使用此代码,但它不起作用:

private void checkcheck()
{
    if (checkBox1.Text == "ON")
    {
        checkBox1.Checked = true;
        checkBox1.ForeColor = Color.DeepSkyBlue;
    }
    else
    {
        checkBox1.Checked = false;
        checkBox1.ForeColor = Color.Silver;
    }
}

我从表单加载事件中调用此方法。

    private void Form3_Load(object sender, EventArgs e)
    {
        cn.Open();
        SqlCommand cmd = new SqlCommand("SELECT * FROM contacts WHERE id = '" + label2.Text  + "' ", cn);
        SqlDataReader reader = cmd.ExecuteReader();
        if (reader.HasRows)
        {
            while (reader.Read())
            {
                textBox1.Text = reader[1].ToString();
                textBox2.Text = reader[2].ToString();
                textBox3.Text = reader[3].ToString();
                textBox4.Text = reader[4].ToString();
                checkBox1.Text = reader[5].ToString();
            }
        }
        cn.Close();
        checkcheck();
    }

就是这样,表单加载,然后复选框根据数据改变,然后它会改变, 当我运行它时,它完美地获取数据,并将复选框更改为 On/Off 但没有颜色或检查

【问题讨论】:

  • 你有没有试过调试看看它是否进入if (checkBox1.Text == "ON")
  • 你确定你的checkBox1.Text 是“ON”吗?
  • 您可能需要阅读dotnetperls.com/debugging
  • 我通常会采用另一种方式,if (checkBox1.Checked) { checkBox1.Text = "ON"; } 或同时设置.Checked.Text
  • 是的,它从数据库中读取...等等,我将添加从数据中读取的代码

标签: c# checkbox


【解决方案1】:

由于您的第一个条件始终为真,因此代码未执行 else 部分。

【讨论】:

  • 你不能假设第一个条件总是正确的
  • 你能准确地说你想在这里做什么吗? Bcz 我创建了一个表单并运行此代码,它正在工作:),当我手动更改文本时,程序会执行 else 部分。
  • 我会尝试做 if = "on" do check AND if = "Off" do nocheck 之类的事情
  • 除了这个(checkbox1)之外,您还有多少其他复选框?在此函数调用之前,您是否尝试过此代码并注释其他代码。
  • 我需要首先:根据表中的数据获取 ON 或 OFF,我已经输入了一些值,例如 ON 和 OFF(我知道这是一个案例)其次:我检索所选项目一个 checkbox.text 然后询问它是打开还是关闭,它的行为是打开还是关闭
猜你喜欢
  • 2015-12-06
  • 1970-01-01
  • 1970-01-01
  • 2022-11-27
  • 2017-06-07
  • 1970-01-01
  • 2018-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多