C# ListBox用双击事件调用删除方法后总是选中“C”字头的项目,用按钮调用删除方法则正常,咋回事?

privatevoidlistBox1_DoubleClick(objectsender,EventArgse){//双击调用删除方法DelItem();}private... private void listBox1_DoubleClick(object sender, EventArgs e) {
//双击调用删除方法
DelItem();
}
private void Form1_Load(object sender, EventArgs e) {
listBox1.Items.Add("A123");
listBox1.Items.Add("B123");
listBox1.Items.Add("C123");
listBox1.Items.Add("A456");
listBox1.Items.Add("B456");
listBox1.Items.Add("C456");
listBox1.Items.Add("A789");
listBox1.Items.Add("B789");
listBox1.Items.Add("C789");
}
void DelItem() {
//未选择项目
if (this.listBox1.SelectedIndex == -1)
{
return;
}
//选中项目索引 int selIndex = this.listBox1.SelectedIndex;
//删除选中项目 this.listBox1.Items.RemoveAt(selIndex);
//项目数 int itemCount = this.listBox1.Items.Count;
//选中删除后的前一项 if (itemCount > selIndex)
{
this.listBox1.SelectedIndex = selIndex;
}
else
{
this.listBox1.SelectedIndex = selIndex - 1;
}
}
private void button1_Click(object sender, EventArgs e) {
//按钮调用删除方法
DelItem();
} 用双击调用删除方法后,选中项目自动跳到“C”开头的项目:

点击button1按钮调用删除方法后,选中项目正常:
展开
 我来答
syht2000
高粉答主

2013-04-05 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部

没发现代码有什么问题,实际运行了一下也是正常的,但是

//选中项目索引            int selIndex = this.listBox1.SelectedIndex;
//删除选中项目 this.listBox1.Items.RemoveAt(selIndex);
//项目数 int itemCount = this.listBox1.Items.Count;


这三行是被你注释了还是怎样,如果这三行去掉注释的话,代码就没什么问题。

更多追问追答
追问
抱歉,复制代码上去时它自动给我搞在一行了,三行代码是有效的,中文才是注释!代码是正常,也能运行,就是删除后想选中的项却一直是以“C”字母开头的项,这才令我头疼!
追答
在我这里一切正常,我是win7 64bit+VS 2010,用你的代码,没有发现你说的情况,定位也都是正常的,listbox为默认的控件未更改任何属性
建议你在 this.listBox1.Items.RemoveAt(selIndex);
this.listBox1.SelectedIndex = selIndex - 1;
这两行上都下断点,看看selindex倒底是什么,如果值是正常的,那就要怀疑是不是你的键盘或者鼠标或者其它问题了。
百度网友94f02eb
2013-04-05 · TA获得超过8612个赞
知道大有可为答主
回答量:7955
采纳率:74%
帮助的人:4485万
展开全部
void DelItem()
{
int selIndex = this.listBox1.SelectedIndex;
//未选择项目
if (selIndex == -1) return;
this.listBox1.Items.RemoveAt(selIndex);
//项目数
if (this.listBox1.Items.Count > 0)
{
this.listBox1.SelectedIndex = selIndex == 0 ? 0 : selIndex - 1;
}
}

逻辑调整了一下

更多追问追答
追问
按你的方法搞了进去,效果没变啊,用双击调用删除方法后,还是选中项目自动跳到“C”开头的项目!
追答
我这里是OK的。

你双击之后,没有滚动鼠标的滚轮之类的动作吧?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式