ListView如何选择行(SelectedIndexChanged)时提问:“确定要移到此行?”,如回答“是”则选择所点击(或键盘选择)的行,如“

zyhjolly 2004-03-24 05:50:22
<WinForm>
ListView(不能多选,MultiSelect = false)如何做到:
选择行(SelectedIndexChanged)时提问:“确定要移到此行?”,
如回答“是”则选择所点击(或键盘选择)的行,如“否”则选择原来高亮选择的行?
使用以下代码发现会多次弹出MessageBox!!!
private int m_iCurIndex = 0;
//...
private void listView1_SelectedIndexChanged(object sender, System.EventArgs e)
{
if (listView1.SelectedItems.Count > 0)
{
DialogResult result
= MessageBox.Show("确定要移动到此行?", "提示信息", MessageBoxButtons.YesNoCancel);
if(result == DialogResult.Yes)
{

m_iCurIndex = listView1.SelectedItems[0].Index;
}
else
{
listView1.Items[m_iCurIndex].Selected = true;
}
}
}
...全文
117 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
aricysds 2004-03-29
  • 打赏
  • 举报
回复
我觉得将if (listView1.SelectedItems.Count > 0)改成if(listview1.selectedIndex !=m_iCurIndex 就不会多次弹出msgbox 了.
zyhjolly 2004-03-29
  • 打赏
  • 举报
回复
现在是用MouseUp和KeyPress,使用SelectedItems[0].index获取行号
zyhjolly 2004-03-24
  • 打赏
  • 举报
回复
To:Dugu_Niu 我就是定义了m_iCurIndex记录上次选择的行号,选择“否”时再用代码listView1.Items[m_iCurIndex].Selected = true;来选择上次所选行,但是发现MessageBox会出现多次。
To:czy412 MouseDown中不能取到行号的啊。。。而且得考虑使用键盘选择行
czy412 2004-03-24
  • 打赏
  • 举报
回复
应该在mousedowm事件里进行处理!
Dugu_Niu 2004-03-24
  • 打赏
  • 举报
回复
自己定一个变量来记录原来选择的行的index,然后每次在listView1_SelectedIndexChanged的最后改变这个值.

如果确认时用户选择no,再选择先前的行

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧