FIX: ListView 执行两次使用 LabelEdit 设置为手动项目单击事件

文章翻译 文章翻译
文章编号: 257495 - 查看本文应用于的产品
本文已归档。它按“原样”提供,并且不再更新。
展开全部 | 关闭全部

本文内容

症状

当您单击 ListView 控件中的某个项目时,项目单击ListView 控件执行事件两次。

原因

导致此问题是顺便编辑的实现哪些手动标签中。当选择的一个项目通常,触发 项目单击 事件,但此外,ListView 控件使其延迟等于一次双击的持续时间内的一个内置计时器。在这种延迟经过之后,计时器的事件被触发,该计时器的代码确定 ListView 控件是否应输入编辑模式下该标签。如果标签编辑被中止的始终是这种情况的手动标签编辑,然后所选内容被清除并 re-selected。此 re-selection 触发第二个 项目单击

您可能会导致此问题发生在两种方法之一。第一种方式是 listview 的将 LabelEdit 属性设置为 lvwManual (如在本文"更多信息"一节中的代码示例)。复制此行为的另一种方法是 listview 的将 LabelEdit 属性设置为 lvwAutomatic 和设置 BeforeLabelEdit 事件中的 取消等于 True

解决方案

若要解决此问题,安装 Visual Studio 6.0 最新的服务包。

如果安装服务包不是一个选项,或者您正在运行早于版本 6.0 版本的 Visual Basic 将 ListView 控件的 LabelEdit 属性设置为 lvwAutomatic 和未中设置 为 true,则取消等 在的 ListViewBeforeLabelEdit 事件中。

状态

Microsoft 已经确认这是在本文开头列出的 Microsoft 产品中的错误。在 Visual Studio 6.0 为最新服务包中,此缺陷已得到纠正。

有关 Visual Studio 的服务包的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
194022信息: Visual Studio 6.0 服务包、 内容,位置,为什么

194295HOWTO: 确定安装了 Visual Studio 服务包
要下载最新的 Visual Studio service pack,请访问下面的 Microsoft 网站:
http://msdn2.microsoft.com/en-us/vstudio/Aa718353.aspx

更多信息

重现行为的步骤

  1. 在 Visual Basic 中创建一个新的 标准 EXE 项目。默认情况下创建 Form1。
  2. 项目 菜单中选择 组件,请选择 Microsoft Windows 公共控件,并再单击 确定
  3. 向 Form1 中添加 ListView 控件。
  4. 将以下代码粘贴到 Form1 的代码窗口中:
    Option Explicit
    
    Private Sub Form_Load()
        Dim Col As ColumnHeader
        Dim itmAdd As ListItem
        
        ' Set the report's view
        ListView1.View = lvwReport
        
        ' Add a column to the listview
        Set Col = ListView1.ColumnHeaders.Add(Text:="Items")
        
        ' Set the label editing to manual
        ListView1.LabelEdit = lvwManual
        
        ' Add some sample data
        Set itmAdd = ListView1.ListItems.Add(Text:="one")
        Set itmAdd = ListView1.ListItems.Add(Text:="two")
    End Sub
    
    Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
        Debug.Print ListView1.SelectedItem.Text
    End Sub
    					
  5. 运行此示例。
  6. 单击 ListView 控件中的项目"两者"。这应在调试 / 即时窗口中显示"两个"产生项的文本。
  7. 稍等片刻,然后再次单击"两个"项。这将导致"2"在调试 / 即时窗口中显示两次项的文本。

属性

文章编号: 257495 - 最后修改: 2014年2月23日 - 修订: 2.2
这篇文章中的信息适用于:
  • Microsoft Visual Basic 6.0 学习版
  • Microsoft Visual Basic 6.0 专业版
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic Control Creation Edition
  • Microsoft Visual Basic 5.0 学习版
  • Microsoft Visual Basic 5.0 专业版
  • Microsoft Visual Basic 5.0 企业版
关键字:?
kbnosurvey kbarchive kbmt kbactivexevents kbbug kbctrl kbfix kblistview kbvs600sp4fix kbvs600sp5fix KB257495 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 257495
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com