Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to prevent SelectedIndexChanged event from firing in ListBox after removing an item from it

Tags:

c#

.net

listbox

I am working on selecting an item which will cause deletion of selected item. The problem is that when I delete an item I am selecting additional item which cause another deletion...

How do I unselest/deselect after deleting selected item?

This causes my problem:

    void lbMessage_SelectedIndexChanged(object sender, EventArgs e)
    {
        DialogResult result = new DialogResult();

        result = MessageBox.Show("Are you sure you want to remove this item?", "Removal Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Information);

        if (result == DialogResult.Yes)
        {
            lbMessage.Items.Remove(lbMessage.SelectedItem); 
            lbMessage.SelectedIndex = -1;
        }
        else
        {
        }
    }

    private void btnAddMessage_Click(object sender, EventArgs e)
    {
        lbMessage.Items.Add(txtMessage.Text);
        txtMessage.Text = string.Empty;
    }
like image 405
HelpNeeder Avatar asked Nov 25 '25 11:11

HelpNeeder


2 Answers

Try removing the SelectedIndexChanged event before removing the item, then add it back in:

private void lbMessage_SelectedIndexChanged(object sender, EventArgs e) {
  if (MessageBox.Show("Are you sure you want to remove this item?", 
                      "Remove Confirmation", 
                      MessageBoxButtons.YesNo,
                      MessageBoxIcon.Question) == DialogResult.Yes) {
    lbMessage.SelectedIndexChanged -= lbMessage_SelectedIndexChanged;
    lbMessage.Items.Remove(lbMessage.SelectedItem);
    lbMessage.SelectedIndexChanged += lbMessage_SelectedIndexChanged;
  }
}
like image 96
LarsTech Avatar answered Nov 28 '25 01:11

LarsTech


Setting SelectedIndex = -1 is raising the SelectedIndexChanged event. Check if there is nothing selected at the start of the event.

void lbMessage_SelectedIndexChanged(object sender, EventArgs e) 
{
    if (lbMessage.SelectedIndex == -1) return;
    ...
}
like image 30
Hand-E-Food Avatar answered Nov 28 '25 00:11

Hand-E-Food



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!