永发信息网

C# listview 控件实现上移功能, 上移之后,仍选中当前行,可继续上移

答案:3  悬赏:40  手机版
解决时间 2021-03-05 00:37
private void btnUp_Click(object sender, EventArgs e)
{
if (this.listView.FocusedItem == null)
{
MessageBox.Show("请选择一行数据!");
return;
}
int CurrentIndex = listView.FocusedItem.Index;
if (!CurrentIndex.Equals(0))
{
Field model = list[CurrentIndex - 1];
list[CurrentIndex - 1] = list[CurrentIndex];
list[CurrentIndex] = model;
ShowListViewData();
this.listView.Items[CurrentIndex - 1].Selected = true;
this.listView.Focus();
}
}

这段代码,为什么我在第一次上移成功后,该行已选中,可是点击“上移”后,还是提示"请选择一行数据!" ?
最佳答案
因为设置焦点项和设置选择项是两个概念,你只要把倒数第二行改一下就OK了。
不知道你的Field和ShowListViewData,所以我的测试代码做了点改动,但解决问题的核心是倒数第二行:

private void button1_Click(object sender, EventArgs e)
{
if (this.listView.FocusedItem == null)
{
MessageBox.Show("请选择一行数据!");
return;
}
int CurrentIndex = listView.FocusedItem.Index;
if (!CurrentIndex.Equals(0))
{
//Field model = list[CurrentIndex - 1];
//list[CurrentIndex - 1] = list[CurrentIndex];
//list[CurrentIndex] = model;
//ShowListViewData();
ListViewItem i = (ListViewItem)listView.Items[CurrentIndex - 1].Clone();
listView.Items[CurrentIndex - 1] = (ListViewItem)listView.Items[CurrentIndex].Clone();
listView.Items[CurrentIndex] = i;
//this.listView.Items[CurrentIndex - 1].Selected = true;
listView.FocusedItem = this.listView.Items[CurrentIndex - 1];//改动后的代码
this.listView.Focus();
}
}
全部回答
imagelist il = new imagelist(); il.imagesize = new size(64, 64); for (int i = 1; i < 20; i++) { il.images.add(image.fromfile("c:\\bq\\cool80_" + i.tostring("00") + ".png")); } il.colordepth = colordepth.depth24bit; this.listview1.largeimagelist = il; for (int i = 1; i < 20; i++) { this.listview1.items.add(i.tostring(), i); } 试试~~
因为你 对this.listView.FocusedItem的判断是获得焦点的时候才不会去执行messagebox, 你在选择了listview的任何一个item之後,你执行的是button事件,然後你最後又加入一个 this.listView.Focus(); ,那就是等於执行完button事件之後,你获得focus的是listview,而不是listview中的item。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
戴尔i5笔记本怎么样?
显示器显示屏幕我给调变形了,调不回来了,怎么
fifteen,your,do,you,around,homework,at,do,
“造烛为照明,求知为运用。学而不用,如同耕
龙溪中一横路我想知道这个在什么地方
双j管放置时间怎么算?
我们说的:3缺1 是指共 有 几个人呢? 那2 缺
《在人间》的故事梗概和主要人物
01=1100=110(?)=10(?)
puma对员工的要求有那些?
筋骨堂上海松江店在什么地方啊,我要过去处理
[C语言-指针]在一个二维数组中。 *(*(a+i)+j)
湖北荆州松滋市高中转校档案能转吗
英雄联盟2017星之守护者是限时上架吗?
缤纷鸟少儿美术基地下沙校区在什么地方啊,我
推荐资讯
14岁的女孩每天看手机10小时眼睛会怎么样
绿园莜面自助这个地址在什么地方,我要处理点
公考,市场营销属于什么考生类别吖,可选的有
已知函数f(x)=1\3x^3-mx^2-3m^2x+1
秧冲大屋这个地址在什么地方,我要处理点事
梦幻西游里129跑环得140的书铁几率有多大具体
125摩托车油门加猛了上不去油
贷款42万贷了19年一年后还了20万以后月供多少
钢铁是怎样炼成的人物情节整理
镶牙大概要多久,过程痛不痛
我对会计一无所知,是不是要学了会计基础后才
在西丽怎么坐车到公明圳美路口?拜托喽
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?