如何解决如何从行选择中的“检查”中保留带有复选框的C#Listview控件?
| 环境 Windows XP x32 Visual Studio 2005标准版 运行Windows Mobile 2003(Pocket PC 2003)的霍尼韦尔海豚9500(带有内置条形码扫描仪和黑白摄像头)使用此处的SDK。 .NET Compact Framework 1.0 SP3和.NET Framework 1.1 使用VC# 目标 我在窗体上有一个带有CheckBoxes = true
和View = Details
的ListView控件,但我不希望用户将复选框设置为“ checkable”。我将其用于记录完成的状态显示。但是,我确实想使用事件处理程序功能通过代码选中该框(即在记录完成时:lvMeters_ItemCheck(null,null);
)。
问题
我已禁用了复选框本身(我认为该设备上的触摸屏不是很精确)。但是,当选择一行(我有3个字符)时,控件通常会选中该复选框,并且似乎未调用事件处理程序。
我尝试过的事情
我试图从根本上撤消事件处理程序中的操作:
private void lvMeters_ItemCheck(object sender,ItemCheckEventArgs e)
{
if (sender is ListView)
{
if (e.CurrentValue == CheckState.Checked)
lvMeters.Items[e.Index].Checked = true;
else
lvMeters.Items[e.Index].Checked = false;
}
else if (e.CurrentValue == CheckState.Checked)
lvMeters.Items[e.Index].Checked = false;
else
lvMeters.Items[e.Index].Checked = true;
}
问题是上面的处理程序没有在listview select上被调用,SelectedItemChanged事件处理程序也没有调用此事件处理程序,但是它仍在选择框上处于选中状态。选中框本身时会调用它。
需要其他信息吗?
问走,我会尽力而为!
我是新手
因此,请随时告诉我我做的这件事是完全错误的,应该以不同的方式来做整个事情。
解决方法
我不熟悉紧凑框架上ListView的限制,但是在标准框架上,可以使用TreeNode.StateImageIndex属性。未检查/检查状态实际上是使用嵌入在标准winforms代码中的小图像(如果我没记错的话,它们是索引1和2)。因此,例如,如果您这样做:
private void lvMeters_ItemCheck(object sender,ItemCheckEventArgs e)
{
e.Item.StateImageIndex = 3;
}
它将更改小图标并将其设置为空。您也可以使用ListView ImageList。
, igh ...与设计师混淆时,我设法以某种方式从控件中删除了事件处理程序。我在某个时候检查了一下,但它仍然存在,但那时我确实确实存在逻辑/代码问题。
感谢您的回答:/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。