为了账号安全,请及时绑定邮箱和手机立即绑定

C# 更改方法的 EventArgs

C# 更改方法的 EventArgs

C#
繁星淼淼 2023-07-09 10:16:36
我正在开发一个 Windows 窗体应用程序,我想将类型参数传递给MouseClick事件而不是,但当我这样做时,调试器会发出委托错误。PictureboxMouseEventArgsEventArgsvoid 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);// 
查看完整描述

3 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

当鼠标单击引发单击事件时,如果您处理Click事件,则 的运行时类型e将MouseEventArgs如 Jimi 在评论中提到的那样。


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


如果您对鼠标单击感兴趣并且希望接收eas MouseEventArgs,那么您应该处理MouseClick事件。


例如:


picttureBox1.MouseClick += PicttureBox1_MouseClick;

进而:


private void PicttureBox1_MouseClick(object sender, MouseEventArgs e)

{


}


查看完整回答
反对 回复 2023-07-09
?
噜噜哒

TA贡献1784条经验 获得超7个赞

您可以从传递 mouseclick 事件参数的父控件捕获鼠标单击事件,检查鼠标位置是否在图片框内并从那里继续?!



查看完整回答
反对 回复 2023-07-09
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

存在哪些事件、它们采用哪些参数、以及何时调用它们以及赋予它们哪些值完全取决于该类的作者。作为此代码的单纯用户,您无法更改它。

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

您试图通过事件参数提供什么信息?您不能简单地检索现有 Click 事件处理程序中的信息吗?


查看完整回答
反对 回复 2023-07-09
  • 3 回答
  • 0 关注
  • 131 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信