在c#中,listView控件使用过程中,在二次选择的问题上很容易出异常,
举例如下:一个新建窗体中只有一个listView控件
代码如下
private
void Form1_Load(
object sender, EventArgs e)
{ listView1.Items.Add( "第一项"); listView1.Items.Add( "第二项"); listView1.Items.Add( "第三项"); listView1.Items.Add( "第四项"); listView1.Items.Add( "第五项"); } private void listView1_DoubleClick( object sender, EventArgs e) { MessageBox.Show( "您选择了"+listView1.SelectedItems[0].Text); } private void listView1_SelectedIndexChanged( object sender, EventArgs e) { MessageBox.Show( "您选择了" + listView1.SelectedItems[0].Text); }
这样的话,我们第一次点击listview中的项时会正常显示messbox,但是第二次就会爆异常
如下图:
百度了一下午,终于明白,listView 的selectindexChange事件每次都要执行两次,第一次将选择的数目,就是selectitems.count清空,然后才重新指定,所以在第二次里selectitems.count =0 ,也就是没有选择任何项,所以报了index异常.
解决办法:在selectindexchange事件中,用If语句屏蔽一地此indexchange的一地此执行
即将代码改为:
private
void listView1_SelectedIndexChanged(
object sender, EventArgs e)
{ if (listView1.SelectedItems.Count==0) { //屏蔽第一次改变 } else { MessageBox.Show( "您选择了" + listView1.SelectedItems[0].Text); } } |
转载于:https://blog.51cto.com/javac/294111