如何将不确定复选框更改为已选中而不是未选中?

Ric*_*ler 3 c# winforms

我有一个CheckBox设置为CheckState.Indeterminate. 当定时器到期时,它将被设置为CheckState.Unchecked并关闭外部输出信号。到目前为止,一切都很好。

使用当前代码,当用户单击时,Indeterminate CheckBox它将变成Unchecked CheckBox. 我想拦截它并使其成为Checked CheckBox.

对用户的影响是取消计时器并保持输出打开,直到用户取消选中该框或用户启动一个单独的进程来接管并再次设置“不确定复选框”。

事实上,他关闭了输出,并且必须明确地再次打开它。

我尝试了验证事件,但直到我离开盒子才发生这种情况。

更新1:澄清一点用户想要看到的内容。当灯关闭时,该框始终处于未选中状态。

当系统的自动化部分运行时,灯亮。如果用户查看该控件,它处于不确定状态,因为用户没有激活它,但它处于打开状态。

当该过程停止时,计时器启动,让灯亮 2 分钟。在此期间用户仍然看到不确定状态。

如果用户需要灯保持亮起状态,他将选中该框以删除不确定状态。当他完成后,他将手动取消选中关闭灯的框或重新启动自动化过程,这将使其再次不确定。

我不知道AutoCheck属性

Han*_*ant 6

不需要任何激烈的事情,您只是不喜欢 Checkbox 实现其 AutoCheck 属性的方式。因此,选择该控件并将其 AutoCheck 属性设置为 False。这样您就可以按照您想要的方式控制检查状态。

添加 Click 事件处理程序,以允许用户通过单击鼠标或按空格键将状态从“不确定”直接翻转为“已检查”:

    private void checkBox1_Click(object sender, EventArgs e) {
        checkBox1.CheckState = checkBox1.CheckState == CheckState.Checked ?
            CheckState.Unchecked : CheckState.Checked;
    }
Run Code Online (Sandbox Code Playgroud)