[英]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.