复选框/切换按钮选中/取消选中自己

时间:2012-05-08 00:39:53

标签: c# winforms checkbox togglebutton

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

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

8 个答案:

答案 0 :(得分:1)

选中复选框的状态,每次单击该按钮,都要进行更改。

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;
    }
}

答案 1 :(得分:1)

  

问题是复选框/按钮一如既往地“显示”   按下,即检查时它所具有的“蓝色”颜色不会改变   给人的印象是它没有被取消选中。 - user1304490

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

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

答案 2 :(得分:0)

您可以为所有复选框分配一个公共事件。将此代码写入.cs文件并选择所有复选框并将此事件分配给checkedChange事件。

private void chkboxes_CheckedChanged(object sender, EventArgs e)
{
    CheckBox chk = (CheckBox)sender;
    if(!chk.Checked)
        chk.Checked = true;
    else
        chk.Checked = false;
}

答案 3 :(得分:0)

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

已选中 CheckBox会显示一个复选标记。控件显得凹陷 未选中 CheckBox为空。控件显示出来  不确定 CheckBox会显示一个复选标记并显示为阴影。对照显得平淡。

在已检查的更改事件上写下这个并检查它是否切换.. 它将像开关一样工作..

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

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

答案 4 :(得分:0)

一个非常短的命令:

checkBox.Checked = !checkBox.Checked;

答案 5 :(得分:0)

如果要在一个表单上更改复选框的复选框状态,则需要快速可靠的代码,而不会有复杂性。

最好的方法是使用:

  

CheckBox.CheckState

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

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

如需进一步阅读,请参阅MSDN的this

答案 6 :(得分: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;

答案 7 :(得分:-1)

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

checkBox.Checked = !checkBox.Checked;