1

我有许多复选框,我想将它们作为切换按钮处理。每个都完全独立于另一个,可以选中或不选中。当用户单击复选框/按钮时,它保持选中状态,如果用户再次单击,则复选框/按钮返回“未选中”状态。复选框/按钮可以选中/取消选中本身吗?

我已经尝试了很长时间,也在互联网上搜索并找不到解决方案。

4

8 回答 8

1

Check the status of the check box, every time the button is clicked, change it.

private void toggButton_CheckedChanged(object sender, EventArgs e) 
{ 
    // everytime you click the button checkbox states will change.
    if(checkBox.Checked)
    {
        checkBox.Checked = false;
    }
    else
    {
       checkBox.Checked = true;
    }
}
于 2012-05-08T00:56:40.380 回答
1

一个很短的命令:

checkBox.Checked = !checkBox.Checked;
于 2015-01-22T10:03:22.700 回答
1

问题是复选框/按钮始终被“显示”,即它在选中时具有的“蓝色”颜色没有改变,给人的印象是它没有被选中。– 用户 1304490

可能设置CheckBox.ThreeState属性 false 有帮助。

如果 ThreeState 属性设置为 false,则 CheckState 属性值只能在代码中设置为 System.Windows.Forms.CheckState 的 Indeterminate 值,而不能通过用户交互。

于 2012-05-09T02:33:21.120 回答
0

You can assign a common event to all Checkboxes. Write this code in your .cs file and select all Checkboxes and assign this event to checkedChange event.

private void chkboxes_CheckedChanged(object sender, EventArgs e)
{
    CheckBox chk = (CheckBox)sender;
    if(!chk.Checked)
        chk.Checked = true;
    else
        chk.Checked = false;
}
于 2012-05-08T00:56:17.610 回答
0

参考:CheckBox.CheckState属性。
它是读写属性,因此您可以在 GUI 中或通过代码进行设置。

Checked CheckBox 显示一个复选标记。控件出现凹陷。
未选中CheckBox 为空。控件出现凸起。
Indeterminate CheckBox 显示复选标记并带有阴影。控件显示为扁平。

将其写入已检查的更改事件并检查它是否切换.. 它将像开关一样工作..

    label1.Text = "ThreeState: " + checkBox1.ThreeState.ToString() + "\n" + "Checked: " + 
checkBox1.Checked.ToString() + "\n" + "CheckState: " + checkBox1.CheckState.ToString();

为您的问题的答案检查CheckBox.AutoCheck 属性

于 2012-05-08T01:19:36.410 回答
0

当您想更改一个表单上太多复选框的复选框状态时,您需要快速可靠的代码,而不是复杂性。

最好的方法是使用:

CheckBox.CheckState

例如,您可以使用以下代码将复选框状态更改为(未选中):

checkbox1.CheckState = CheckState.Unchecked;
checkbox2.CheckState = CheckState.Unchecked;
checkbox3.CheckState = CheckState.Unchecked;

如需进一步阅读,请参阅MSDN 中的此内容。

于 2015-04-03T13:03:49.263 回答
0

这个问题非常不清楚,但如果有人仍在为复选框而苦苦挣扎:

在其中两个之间切换(不能同时勾选两个复选框,至少需要勾选一个):

 private void chkBoxON_CheckedChanged(object sender, EventArgs e)
    {
        if (chkBoxON.Checked)
        {
            chkBoxOFF.Checked = false;
            // here some code to do after this checkbox is ticked
        }
        else
        {
            chkBoxOFF.Checked = true;
        }
        
    }

    private void chkBoxOFF_CheckedChanged(object sender, EventArgs e)
    {
        if (chkBoxOFF.Checked)
        {
            chkBoxON.Checked = false;
            // here some code to do after this checkbox is ticked
        }
        else
        {
            chkBoxON.Checked = true;
        }
        
    }

如果您只需要一个选中或两个都未选中,那么:

 if (chkBoxON.Checked)
        {
            chkBoxOFF.Checked = false;
        }
    }

    private void chkBoxOFF_CheckedChanged(object sender, EventArgs e)
    {
        if (chkBoxOFF.Checked)
        {
            chkBoxON.Checked = false; 
        }
       

如果您需要使用按钮更改其状态,则:

private void button1_Click(object sender, EventArgs e)
    {
        chkBoxON.Checked = false;
        //chkBoxON.Checked = true; //if need to be checked
    }

如果您需要禁用单击复选框的可能性,则:

chkBoxOFF.Enabled = false;
于 2021-06-26T20:39:53.570 回答
-1

您只需要使用 NOT 运算符来创建最简单的切换。

checkBox.Checked = !checkBox.Checked;
于 2020-11-05T00:00:58.063 回答