如何将自己的事件分派到控件以模拟c#中的鼠标点击

本文关键字:模拟 鼠标 控件 自己的 事件 分派 | 更新日期: 2023-09-27 17:57:55

在c#中是否可以将自己的事件分派给控件?

我的意思是,就像你在java中可以做的那样:

MouseEvent leftClick = new MouseEvent(image, MouseEvent.MOUSE_PRESSED,
0, 0, 100, 100, 1, false, MouseEvent.BUTTON1);
image.dispatchEvent(leftClick);

如何将自己的事件分派到控件以模拟c#中的鼠标点击

C#中的事件工作方式略有不同。不是将事件分派给对象,而是订阅对象可用的事件并提供委托。请参阅事件(C#与Java)以获取参考。然而,如果你想运行附加到事件的代码,你可以直接调用委托,但我认为大多数人都会认为这种糟糕的形式。最好有一个执行操作的方法,并从委托和任何你想模拟点击事件的地方调用它。

 SomeControl.LeftMouseButtonDown += new LeftMouseButtonDown(SomeControl_LeftMouseButtonDown);
 protected void SomeControl_LeftMouseButtonDown(object sender, EventArgs e) //Might be typed EventArgs instead of generic.
 {
     //Run some code or call some method.
 }

最好使用Click事件而不是LeftMouseButtonDown,因为当它们连续发生时,Click事件会在LeftMouseButton Down和LeftMousebutton Up上引发。

您使用的控件没有LeftMouseButtonDown或Click事件吗?如果是这样,您将需要编写自己的控件,继承自该控件,并编写自己的事件。

此外,如果您提供一些有关正在使用的.NET技术(WPF、WinForms、ASP.NET、Silverlight等)的详细信息,也会有所帮助,因为每种技术都有不同的控件集。从该技术中了解您正在使用的控件可能也会有所帮助。

希望这能有所帮助!

我为NUnitForms编写了MouseController。它设计用于与Windows窗体一起工作,并通过将事件放入Windows事件队列来模拟事件。

您可以在以下位置查看源http://nunitforms.svn.sourceforge.net/viewvc/nunitforms/trunk/nunitforms/source/NUnitForms/MouseController.cs?revision=69&view=标记