System.EventArgs不包含Button的定义 - C#

时间:2016-03-15 13:50:11

标签: c# winforms datagridview mouseevent buttonclick

我的winform上有一个DataGridView,我在其中显示了5列和几行,我想添加一项功能,如果我右键单击任何一行,它会显示一个菜单,以查看更多关于那条记录。 但是当我写e.Button

时,我收到了一个错误
  

System.EventArgs不包含Button的定义,也没有接受System.EventArgs类型的第一个参数的扩展方法按钮(你是否缺少任何指令或程序集引用?)

enter image description here

2 个答案:

答案 0 :(得分:2)

DataGridView MouseEventArgs事件实际上提供了datagridview1_MouseClick参数。您仅使用EventArgs声明了protected void datagridview1_MouseClick(object sender, MouseEventArgs e) { if (e.Button == ... 方法。

将其更改为

CellMouseClick

它应该有效(如果您使用MouseClick代替DataGridViewCellMouseEventArgs,请使用MouseEventArgs代替datagridview1.MouseClick += datagridview1_MouseClick。)

作为旁注:当您添加"错误地"时,您不会收到编译错误。声明处理程序如MouseEventArgs,因为EventArgs派生自MouseEventArgs,因此编译器对该赋值没有任何问题。当e被声明为e时,当您尝试通过EventArgs访问EventArgs实例的属性时会出现此问题,因为MouseEventArgs没有知道MouseClick衍生物的属性。

P.S。:请将您的代码作为文字发布到您的下一个问题。对于我们来说,阅读或重复使用以再现错误比使用图像更好。在该图片中,我无法查看您是否使用了CellMouseClickDim user = "Patricia" Dim chatter = ChatContactPanel.Controls. OfType(Of Contacts). FirstOrDefault(Function(c) c.ChatName.StartsWith(user)) If chatter IsNot Nothing Then chatter.Status = chatter.ChatStatus.Online End If 事件

答案 1 :(得分:1)

您的委托处理程序方法应该使用DataGridViewCellMouseEventArgs

https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellmouseclick(v=vs.110).aspx