如何触发鼠标单击事件?

3

你好,我读到过事件可以像方法一样被触发。对于我的自定义事件,这确实有效(我创建了一个委托、事件,并且可以通过调用它来触发事件)。然而,我无法手动触发像MouseClick和其他事件,它一直提示要出现在+=运算符的左侧。问题是什么?


没有要发布的代码..只需尝试手动触发此.MouseClick事件。 - Calamro
5个回答

4
虽然我相信你会得到比这个回答更详细的答案,但基本上你无法在包含事件的类之外“引发”该事件。MSDN对事件有以下说明
事件是一种特殊的多路广播委托,只能从声明它们的类或结构中(发布者类)调用。如果其他类或结构订阅了事件,则当发布者类引发事件时,它们的事件处理程序方法将被调用。
如果您想要为Windows窗体控件MouseClick事件“真正”引发事件,则必须创建该控件的子类并调用base.OnMouseClick()或覆盖它。

哦,是的,我认为那就是原因:D 谢谢! - Calamro

2

如果这是一个按钮,您可以使用PerformClick方法编程点击它。

可悲的是,除了MenuItem之外,这仅适用于按钮而不是其他类型的Control


1
如果你想点击按钮,你应该调用:
button1.PerformClick();

如果你想调用MouseClick,请参考这个forum,其中有使用Windows API的C#解决方案。

0
private void button1_Click(object sender, EventArgs e)
{
    //Enter your code here
}

void Page_Load(object sender, EventArgs e){
    this.button1.Click += new System.EventHandler(this.button1_Click);

    this.button1_Click(this, e);
}

0

假设你想手动触发“click”事件。这个方法对我有效:

public partial class CustomButton : UserControl
{
    public new event EventHandler Click;

    private void lblText_Click(object sender, EventArgs e)
    {
        Click(this, e);
    }

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接