AndroidAL
AndroidAL

Reputation: 1119

Remove Value when Checkbox is unchecked

im trying to remove a value when a checkbox is unchecked. My Code:

var words = new List<string>();

if (ckbAnswer1.Checked)
   words.Add(" -A,");

if (ckbAnswer2.Checked)
   words.Add("B,");

if (ckbAnswer3.Checked)
   words.Add("C");

treeView1.SelectedNode.Text +=   treeView1.SelectedNode.Text +string.Join(" ", words);

Return Question 1 - A,B,C, but, say i want to uncheck "A", which should remove it from Question 1 - A,B,C. How do i do that?

Upvotes: 0

Views: 876

Answers (3)

Rick
Rick

Reputation: 841

If you assign this CheckChanged event to each Checkbox:

private void ckbAnswer_CheckedChanged(object sender, EventArgs e) 
{
   UpdateNode();
}

And then add the method:

private void UpdateNode()
{
   var words = new List<string>();
   if (ckbAnswer1.Checked)
   {
      words.Add("A");
   }
   if (ckbAnswer2.Checked)
   {
      words.Add("B");
   }
   if (ckbAnswer3.Checked)
   {
      words.Add("C");
   }
   var answers = " - none";
   if (words.Count > 0) {
      answers = " - " +  string.Join(", ", words);
   }
   treeView1.SelectedNode.Text = treeView1.SelectedNode.Tag.ToString() + answers;
}

This line should be added to where you initially populate the TreeView:

treeView1.SelectedNode.Tag = treeView1.SelectedNode.Text;

That should do what you are after.

The 'tricky' part is ensuring you keep a copy of the original Node.Text.

Upvotes: 0

Roman
Roman

Reputation: 12171

ou should subscribe on CheckedChanged event and inside method check:

private void CheckBoxA_CheckedChanged(Object sender, EventArgs e) 
{
    if (checkboxA.Checked)
    {
        words.Add("word");
    }
    else
    {
        words.Remove("word");            
    }
    treeView1.SelectedNode.Text = "Question 1 - ";
    treeView1.SelectedNode.Text += string.Join(" ", words);          
}

Upvotes: 1

Munawar
Munawar

Reputation: 2587

I would recommend to use some key instead of just text based questions.

List<KeyValuePair<Guid, string>> words = new List<KeyValuePair<Guid, string>>();

ckbAnswer1.Tag = Guid.NewGuid().ToString();

if (ckbAnswer1.Checked)
    questions.Add(new KeyValuePair<Guid, string>(ckbAnswer1.Tag, "A"));
 else//Unchecked
   words.Remove(words.Where(kv => kv.Key == ckbAnswer1.Tag));


treeView1.SelectedNode.Text += treeView1.SelectedNode.Text + string.Join(", ", words.Select(kvp => kvp.Value));

Upvotes: 0

Related Questions