listBox的SelectedIndexChanged事件引发有关问题

listBox的SelectedIndexChanged事件引发问题
1、不理解button2_Click怎么会触发listBox1_SelectedIndexChanged事件,msdn不是说: SelectedIndex 属性或 SelectedIndices 集合更改后才会引发吗?虽然增加if(listBox1.SelectedIndex != -1)能解决,但原因何在????
 
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if(listBox1.SelectedIndex!=-1)
            { 
                   //
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
                  listBox1.Items[listBox1.SelectedIndex] ="abc";
        }


------解决方案--------------------
 listBox1.Items[listBox1.SelectedIndex] ="abc";这个操作的顺序是将选中的Item删掉,在添加。你可以写点代码看看是不是这样的效果。

   private void button1_Click(object sender, EventArgs e)
        {
            listBox1.Items[listBox1.SelectedIndex] = "newText";
        }

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            MessageBox.Show("code outside");
            if (listBox1.SelectedIndex != -1)
            {
                MessageBox.Show("code in !=-1");
            }
        }
 
------解决方案--------------------
跟楼主一样,以前也碰到过这个问题,确实会激发SelectedIndexChanged事件,在事件里必须判断 !=-1,正如楼上所说,先删除再添加的

所以必须在事件里加上SelectedIndex!=-1来进行判断
------解决方案--------------------
listBox1.SelectedIndex != -1为不选中情况下,你没有点listbox1时,listBox1.SelectedIndex值为-1,否则返回错误