【问题标题】:ListView click event not triggered when clicking on empty areas单击空白区域时未触发 ListView 单击事件
【发布时间】:2015-12-04 03:39:46
【问题描述】:

我的表单上有一个ListView 控件。我已将其显示模式设置为LargeImageList。我需要处理这个控件中的项目。所以我为它的click 事件编写了代码。但是我现在看到,当我 click 在其中的空白区域时,不会触发此事件。

无论如何,我怎样才能让我的ListView 知道对其区域的点击。

【问题讨论】:

  • 我认为你必须使用 MouseDown/MouseUp 事件来捕捉那些特定的点击事件。
  • @Ulric 与 MouseDown 的故事相同。
  • 嗯......它适用于我的机器。我遇到了与 MouseClick 和 Click 事件相同的问题,但无论我单击空间还是项目,MouseDown 都对我有效。
  • 你能分享一点代码吗?我们会更容易为您提供帮助...
  • 使用 MouseDown 代替 ListView.HitTest() 来发现点击了什么。

标签: c# winforms listview events


【解决方案1】:

要捕捉鼠标点击 ListView 项目周围的“空白”,您需要使用 MouseDown/MouseUp 事件。

这也将捕获对项目的点击。

【讨论】:

    【解决方案2】:

    我已经使用 Global Mouse Hook 来解​​决类似的问题。您可以使用它来检测屏幕上任意位置的鼠标点击,然后只需检查点击是否在列表视图控件范围内。

    Global Mouse Key Hook获取代码

    IKeyboardMouseEvents m_GolbalHook = Hook.GlobalEvents();
    m_GolbalHook.MouseClick += m_GolbalHook_MouseClick;
    
    
    private void m_GolbalHook_MouseClick(object sender, MouseEventArgs e)
    {
        if (listView.Bounds.Contains(e.Location)) && (e.Button == System.Windows.Forms.MouseButtons.Left))
        {
             //Do Stuff
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-13
      • 1970-01-01
      相关资源
      最近更新 更多