猿问

C# 更改方法的 EventArgs

我正在开发一个 Windows 窗体应用程序,我想将类型参数传递给MouseClick事件而不是,但当我这样做时,调试器会发出委托错误。PictureboxMouseEventArgsEventArgs


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);

// 


繁星淼淼
浏览 132回答 3
3回答

胡说叔叔

当鼠标单击引发单击事件时,如果您处理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){}

噜噜哒

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

慕田峪4524236

存在哪些事件、它们采用哪些参数、以及何时调用它们以及赋予它们哪些值完全取决于该类的作者。作为此代码的单纯用户,您无法更改它。您可以创建 Picature Box 的子类,在其中添加您自己的事件“ClickWithExtraArguments”或类似的事件。但提高它来代替默认值可能并不容易。有时“RaiseEvent[X]”代码被标记为受保护,因此您可以覆盖它。RaiseMouseEvent 就是其中之一,但这确实深入到事件处理。您试图通过事件参数提供什么信息?您不能简单地检索现有 Click 事件处理程序中的信息吗?
随时随地看视频慕课网APP
我要回答