交换两个复选框值

时间:2013-08-09 15:48:41

标签: checkbox

我有2个复选框。当我检查另一个时我想取消选中,反之亦然。所以,总是,我只会检查一个而另一个未经检查。我现在拥有的是当我检查一个时,另一个是未经检查的(好的)。现在,当我转到未经检查并检查它时,在第一次单击时都会取消选中。这是我的例子:

def CB1Function():

CB2.setChecked(0)
CB1.stateChanged.connect(CB1Function)

def CB2Function():

CB1.setChecked(0)
CB2.stateChanged.connect(CB2Function)

换句话说,例如,我有3个选项,有3个复选框,我应该一次只选择一个选项。

由于

2 个答案:

答案 0 :(得分:3)

这可能是一个愚蠢的答案,但为什么不使用radiobuttons?

  

单选按钮或选项按钮是一种图形用户界面元素,允许用户只选择一组预定义的选项。

来源:http://en.wikipedia.org/wiki/Radio_button

答案 1 :(得分:1)

听起来像是一个无人机。但如果你坚持使用复选框,请尝试这样的事情:

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            checkBox2.Checked = !checkBox1.Checked;
        }

        private void checkBox2_CheckedChanged(object sender, EventArgs e)
        {
            checkBox1.Checked = !checkBox2.Checked;
        }
编辑:如果你有两个以上的复选框(甚至有两个)你可以创建一个循环遍历所有复选框并更改它们的过程,类似于(伪代码):

private void CheckAllCheckboxes(checkbox ACheckbox) //ACheckbox is the checkbox just clicked
{
    bool JustChecked = ACheckbox.checked; //did you enable or disable ACheckbox?
    for (int i = 0; i <= AllCheckBoxes.count; i++)
    {
        if (AllCheckboxes[i] != ACheckbox) //every checkbox except the one just checked...
        {
            AllCheckBoxes[i].checked = !JustChecked //set the opposite
        }
    }
}