0

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

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

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

image.dispatchEvent(leftClick);
4

2 回答 2

0

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,因为当 LeftMouseButtonDown 和 LeftMouseButtonUp 连续发生时,它们会引发 Click 事件。

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

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

希望这会有所帮助!

于 2013-02-05T20:17:39.330 回答
0

MouseControllerNUnitForms编写了。它旨在与 Windows 窗体一起工作,并通过将事件放入 Windows 事件队列来模拟事件。

您可以在http://nunitforms.svn.sourceforge.net/viewvc/nunitforms/trunk/nunitforms/source/NUnitForms/MouseController.cs?revision=69&view=markup查看源代码

于 2013-02-05T20:27:11.677 回答