1

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

def CB1Function():

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

def CB2Function():

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

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

谢谢

4

2 回答 2

3

这可能是一个愚蠢的答案,但为什么不使用单选按钮呢?

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

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

于 2013-08-09T15:50:18.557 回答
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
        }
    }
}
于 2013-08-09T16:00:18.190 回答