LinkLabel.Click:EventArgs上的InvalidCastexception

时间:2014-10-16 11:14:59

标签: .net vb.net visual-studio-2010

visual studio 2010中,我将a standard linklabel拖到表单上。我doubleclick生成Click-EventHandler的标签。

产生以下结果:

Private Sub lnkDoc_LinkClicked(sender As System.Object, e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles lnkDoc.Click
    Process.Start(....)
End Sub

running (no builderrors) & clicking the link发生以下错误时:

JIT-Exception:
System.InvalidCastException: Unable to cast object of type 'System.Windows.Forms.MouseEventArgs' to type 'System.Windows.Forms.LinkLabelLinkClickedEventArgs'.

当我change eventhandler使用MouseEventsArgs代替i dont encouter any problems时:

   Private Sub lnkDoc_LinkClicked(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles lnkDoc.Click
        Process.Start(....)
    End Sub

问题: 为什么Visual Studio会提供使用' LinkLabelLinkClickedEventArgs'而不是所需的' MouseEventArgs'我怎样才能在将来保护自己免受此类错误的影响?

注意:

LinkLabelLinkClickedEventArgs:为LinkClicked事件提供数据。

MouseEventArgs:提供MouseUp,MouseDown和MouseMove事件的数据。

1 个答案:

答案 0 :(得分:2)

它们是两个不同的事件,有Click-eventLinkClicked-event。在属性框中,查看事件,您将看到,如果您想自动生成方法,只需双击相应事件下的字段。

请参阅MSDN

  

通常,处理LinkClicked事件以执行任务   用户单击控件中的链接。的事件处理程序   LinkClicked事件传递了一个实例   包含LinkLabelLinkClickedEventArgs的{​​{1}}类   与单击的链接关联的对象。您可以使用   LinkLabel.Link的LinkData属性中指定的信息   用于确定单击了哪个链接或要执行的任务类型的类   单击链接时执行。例如,如果LinkLabel.Link控件   有一个LinkLabel对象定义其LinkData属性设置为   字符串www.microsoft.com,您可以在事件中使用此信息   用于显示网站的LinkClicked事件的处理程序。