If one check box is selected, check another box.

I have two checkboxes in my form; chkBuriedand chkAboveGround. I want to configure it, so if one of them is checked, the other is not installed. How can i do this?

I tried the property CheckChanged:

private void chkBuried_CheckedChanged(object sender, EventArgs e)
{
    chkAboveGround.Checked = false;
}
private void chkAboveGround_CheckedChanged(object sender, EventArgs e)
{
    chkBuried.Checked = false;
}

And it works, just not as good as I hoped. That is, when I check chkBuried, then check chkAboveGroundboth boxes will not be checked before I can check another one again.

+4
source share
8 answers

change your code as below.

private void chkBuried_CheckedChanged(object sender, EventArgs e)
{
    chkAboveGround.Checked = !chkBuried.Checked;
}
private void chkAboveGround_CheckedChanged(object sender, EventArgs e)
{
    chkBuried.Checked = !chkAboveGround.Checked;
}
+10
source

I suggest you use check_click instead of check_changed

        private void checkBox1_Click(object sender, EventArgs e)
        {
            checkBox2.Checked = false;
            checkBox3.Checked = false;
        }

        private void checkBox2_Click(object sender, EventArgs e)
        {
            checkBox1.Checked = false;
            checkBox3.Checked = false;
        }

        private void checkBox3_Click(object sender, EventArgs e)
        {
            checkBox1.Checked = false;
            checkBox2.Checked = false;
        }
+3
source

, CheckedChanged, , CheckBox , .

:

private void chkBuried_CheckedChanged(object sender, EventArgs e)
{
    if(chkBuried.Checked == true) {
        chkAboveGround.Checked = false;
    } else {
        chkAboveGround.Checked = true;
    }
}

private void chkAboveGround_CheckedChanged(object sender, EventArgs e)
{
    if(chkAboveGround.Checked == true) {
        chkBuried.Checked = false;
    } else {
        chkBuried.Checked = true;
    }
}
+1

, - :

public void CheckACheckBox(Checkbox ck)
{
    foreach (Control ckb in this.Controls)
    {
       if ((ckb is CheckBox) && (ckb == ck))
          ck.Checked = true;
       else
          ck.Checked = false;
    }
}
0
List<CheckBox> groupOfCheckBoxes = new List<CheckBox>();
void InitFunction() {
    groupOfCheckBoxes.Add(checkbox1);
    groupOfCheckBoxes.Add(checkbox2);
    groupOfCheckBoxes.Add(checkbox3);
    foreach (CheckBox cb in groupOfCheckBoxes)
     cb.Click += checkbox_Click
}
void checkbox_Click(object sender, EventArgs e) 
{
 foreach (CheckBox cb in groupOfCheckBoxes) {
  cb.IsChecked = cb == sender;
 }
}

-.

0

, .

        private void chkOne_CheckedChanged(object sender, EventArgs e)
        {
            if (chkTwo.Checked == true)
            {
                chkTwo.Checked = !chkOne.Checked;
            }
        }

        private void chkTwo_CheckedChanged(object sender, EventArgs e)
        {
            if (chkOne.Checked == true)
            {
                chkOne.Checked = !chkTwo.Checked;
            }
        }
0

- Click CheckedChanged. .

    private void chkOne_Click(object sender, EventArgs e)
    {
        chkTwo.Checked = false;
    }

    private void chkTwo_Click(object sender, EventArgs e)
    {
        chkOne.Checked = false;
    }
0
source

This will work for two unverified mailboxes, since they are already removed, it’s easier.
I had to do it myself.

private void customer_IsCheckedChanged(object sender, EventArgs e)
{
    business.IsChecked = false;
}

private void business_IsCheckedChanged(object sender, EventArgs e)
{
    customer.IsChecked = false;
}
0
source

Source: https://habr.com/ru/post/1531465/


All Articles