ListView中的焦点
来源:互联网 发布:android tool for mac 编辑:程序博客网 时间:2024/06/05 00:40
今天碰到一个令人匪夷所思的问题,ListView中通过ImageList显示图片,在SelectedIndexChanged事件响应函数中,鼠标选中一个图片可以在另一个Text控件中显示该图片的信息。代码如下:
若用注释中的代码获取selectedIndex,则当ListView控件刷新后,通过虚线框选择任意一个或多个图片都会导致异常,跟踪后发现selectedIndex值为-1,而item值为null。但是若是鼠标直接单击选中一个图片,则不会出现这种异常。(IndexOf(Item)函数当参数不在ListView中时,放回-1)。
MSDN上对FocusedItem的说明如下:
表示具有焦点的项的 ListViewItem;如果 ListView 中的所有项都不具有焦点,则为 null。Nothingnullptrnull 引用(在 Visual Basic 中为 Nothing)。
FocusedItem 属性返回 ListViewItem,它表示当前为 ListView 控件显示聚焦框的项。由于 ListView 控件没有可直接编辑的区域(它显示的项除外),所以当 ListView 控件具有焦点时,ListView 中的项会在其项文本周围显示焦点标
线。通常,在 ListView 控件中最后选择的项是具有焦点的项。虽然某一项可能是显示焦点标线的项,但实际上它可能不是 ListView 中的选定项。使用 SelectedItems 或 SelectedIndices 属性来获取 ListView 控件中的选定项,不必选择 FocusedItem 属性。您可以使用 FocusedItem 属性来确定 ListView 控件中最后单击的项,不考虑选择状态。
以上说明可以知道,item之所以为null,是因为ListView中没有项获得焦点。但是如果不通过刷新(就是先把ListView和ImageList调用clear()函数再重新绘制),而是在鼠标随意单击之后,再通过虚线框选择某一项,则不会出现如上的异常。为什么?(以上注释后的代码可以运行正确)
----------------------------------------------------------------------------------------------------------------------------------------------------
以上问题通过后来的进一步调试,发现若用虚线框来选择ListView中的Item,则不管“框住”哪个项目,FocusedItem都是最后一次鼠标单击选中或通过方向键选中并按下enter键确认的项目,而不是虚线框中的任何一个项。即通过虚线框选择和通过方向键选择而不按下enter键确认,是不能改变焦点的,这就是“焦点”在获得焦点的控件中与“选中”的区别。刷新以后,控件中的任何一个项目都不具有焦点,故而通过FocusedItem返回的项目为null。以前没有找到原因,是因为我把所有的项目的关键字都默认设置为相同,这次把每个项目的关键字改为不同后,才看清楚。
如图所示,鼠标选中第四张图片,关键字区却显示的是第二张图片的。这是因为第二张才是获得焦点的项目。
- ListView中的焦点
- listView Item中的焦点情况
- listView中的item获得焦点
- 【焦点控制】通过按键控制ListView,TabHost中的焦点。
- 通过按键控制ListView,TabHost中的焦点。
- listview 中的控件抢占焦点问题
- EditText在ListView中的键盘焦点问题
- ListView 焦点
- ListView焦点
- Android Listview控件中的其他控件的焦点问题
- listview中的item和edittext强焦点问题怎么解决
- ListView中的Item点击和Button点击焦点冲突
- listview中的item和edittext强焦点问题怎么解决
- android:descendantFocusability listView中的item获取焦点用法简析
- listview和其中的item中的view焦点冲突解决方案
- ListView中的条目获取焦点时更换背景
- android 中的一些焦点处理(listView GridView 抢焦点 与focus技巧)
- android 中的一些焦点处理(listView GridView 抢焦点 与focus技巧)
- 又见硝烟 - Google的simple编程语言
- 网络直播:8月10号马士兵老师在线java授课
- my dear
- DataBase.cs
- Spring 编程入门十大问题解答
- ListView中的焦点
- observer设计模式的java实现
- I没得什么积分啊!
- Hashtable用法
- const
- svn提交数据失败(提示 svn:MKACTIVITY ... 403 Forbidden )
- 关闭自动播放和关闭磁盘空间警告
- JQuery学习之(二)选择器
- 电磁阀的分类及应用范围