在c#的ListView上触发双击事件

本文关键字:双击 事件 ListView | 更新日期: 2023-09-27 18:15:20

是否有可能以编程方式在ListView上触发DoubleClick事件?不需要知道事件处理程序的位置/签名?

在c#的ListView上触发双击事件

如果我明白你想要什么,不如这样做:

private void MouseDoubleClick(object sender, EventArgs e)
{
   //some code on mouse double click
}

:

private void MethodToExecuteOnDoubleClick()
{
  //some code on mouse double click
}
private void MouseDoubleClick(object sender, EventArgs e)
{
   MethodToExecuteOnDoubleClick();
}

然后你可以随时调用MethodToExecuteOnDoubleClick()而不需要触发双击事件

我之前写过一篇博文:模拟点击;它不是真正的单击,但它触发事件处理程序。博客说"OnClick",把它换成"OnDoubleClick",你应该没问题。

对于模拟鼠标点击,您可以这样做:

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
  //....
   [DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
   public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);
   private const int MOUSEEVENTF_LEFTDOWN = 0x02;
   private const int MOUSEEVENTF_LEFTUP = 0x04;
   private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
   private const int MOUSEEVENTF_RIGHTUP = 0x10;

   public void DoMouseClick()
   {
      //Call the imported function with the cursor's current position
      int X = Cursor.Position.X;
      int Y = Cursor.Position.Y;
      mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
   }
   //...
}

最好创建一个封装控件,并在其中处理您可能需要的任何逻辑。