繁体   English   中英

C#更改方法的EventArgs

[英]C# changing EventArgs for method

我正在开发一个Windows窗体应用程序,我想传递给MouseClick事件Picturebox类型的参数MouseEventArgs ,而不是EventArgs ,但调试叫喊错误的委托,当我这样做。

void PictureBox1Click(object sender, MouseEventArgs e)
{
    // Some code
}

///////
// imageBox
// 
this.imageBox.Location = new System.Drawing.Point(12, 12);
this.imageBox.Name = "imageBox";
this.imageBox.Size = new System.Drawing.Size(1758, 829);
this.imageBox.TabIndex = 0;
this.imageBox.TabStop = false;
this.imageBox.Click += new System.EventHandler(this.PictureBox1Click);
// 

提前谢谢,Jackob

您可以从父控件中捕获鼠标单击事件,其中鼠标点击事件args被传递,检查鼠标位置是否在图片框内并从那里继续?!

存在着哪些事件,他们采取的论点,以及确实当他们被调用时,给予他们的价值完全取决于该阶级的作者。 仅作为此代码的用户,您无法更改它。

您可以创建Picature Box的子类,您可以在其中添加自己的事件“ClickWithExtraArguments”或类似的东西。 但是用它代替默认值可能并不容易。 有时“RaiseEvent [X]”代码被标记为受保护,因此您可以覆盖它。 RaiseMouseEvent就是其中之一,但这真的深入到事件处理中。

你试图通过Event Args提供什么信息? 您是否可以简单地检索现有Click事件处理程序中的信息?

当鼠标单击引发click事件时,如果你处理Click事件,那么e的运行时类型就是MouseEventArgs正如Jimi在评论中已经提到的那样。

但是在某些控件中,比如Button ,你可以在没有实际鼠标点击的情况下引发Click事件,例如通过调用button1.PerformClick()或当按钮是表单的AcceptButton并按Enter键 ,或者按下助记键组合对于按钮或当按钮具有焦点并按空格键时。 在这种情况下, e的运行时类型是EventArgs

如果您对鼠标单击感兴趣并且想要接收e作为MouseEventArgs ,那么您应该处理MouseClick事件。

例如:

picttureBox1.MouseClick += PicttureBox1_MouseClick;

接着:

private void PicttureBox1_MouseClick(object sender, MouseEventArgs e)
{

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM