我的winform上有一个DataGridView
,我在其中显示了5列和几行,我想添加一项功能,如果我右键单击任何一行,它会显示一个菜单,以查看更多关于那条记录。
但是当我写e.Button
System.EventArgs不包含Button的定义,也没有接受System.EventArgs类型的第一个参数的扩展方法按钮(你是否缺少任何指令或程序集引用?)
答案 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。:请将您的代码作为文字发布到您的下一个问题。对于我们来说,阅读或重复使用以再现错误比使用图像更好。在该图片中,我无法查看您是否使用了CellMouseClick
或Dim 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