6

环境

  • Windows XP x32 Visual Studio 2005 标准版
  • Honeywell Dolphin 9500 运行 Windows Mobile 2003 (Pocket PC 2003) 内置条码扫描仪和黑白相机 使用位于此处的 SDK 。
  • .NET Compact Framework 1.0 SP3 和 .NET Framework 1.1
  • 使用 VC#

目标

我在表单上有一个 ListView 控件,CheckBoxes = trueView = Details我不希望复选框被用户“选中”。我用它来显示记录完成的状态。但是,我确实想使用事件处理函数通过代码检查该框(即在记录完成时:)lvMeters_ItemCheck(null, null);

问题

我已禁用检查框本身(我认为,此设备上的触摸屏并不精确)。但是,选择一行(我有FullRowSelect = true)时,控件通常会检查复选框,并且事件处理程序似乎并未被调用。

我尝试过的事情

我试图基本上撤消事件处理程序中的操作:

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;
}

问题是上面的处理程序没有在列表视图选择上被调用,SelectedItemChanged 事件处理程序也没有调用这个事件处理程序,但它仍在选中选择框。检查框本身时确实会调用它。

需要更多信息?

问一下,我会尽力而为!

我是新手

所以请随时告诉我,我这样做完全错了,应该以不同的方式做整个事情。

4

2 回答 2

0

叹息......我在与设计师混在一起时不知何故设法从控件中删除了事件处理程序。我在某个时候检查过它仍然存在,但那时我确实遇到了逻辑/代码问题。

感谢您的回答:/

于 2011-06-08T13:01:12.560 回答
0

我不熟悉紧凑框架上的 ListView 的限制,但是在标准框架上,您可以使用TreeNode.StateImageIndex属性。未选中/选中状态实际上是使用嵌入标准 winforms 代码中的小图像(如果我没记错的话,它们是索引 1 和 2)。因此,例如,如果您这样做:

private void lvMeters_ItemCheck(object sender, ItemCheckEventArgs e)
{
    e.Item.StateImageIndex = 3;
}

它将更改小图标并将其设置为空。您还可以使用 ListView ImageList。

于 2011-06-06T20:29:12.577 回答