.net 链接标签。单击:InvalidCastexception on EventArgs
在.net 链接标签。单击:InvalidCastexception on EventArgs,.net,vb.net,visual-studio-2010,.net,Vb.net,Visual Studio 2010,在VisualStudio2010中,我将标准链接标签拖动到表单上。I双击标签以生成单击事件处理程序 这将产生以下结果: Private Sub lnkDoc_LinkClicked(sender As System.Object, e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles lnkDoc.Click Process.Start(....) End Sub 当运行(无构建错误)&单击链接时发生以下错误
VisualStudio2010
中,我将标准链接标签拖动到表单上。I双击标签以生成单击事件处理程序
这将产生以下结果:
Private Sub lnkDoc_LinkClicked(sender As System.Object, e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles lnkDoc.Click
Process.Start(....)
End Sub
当运行(无构建错误)&单击链接时发生以下错误:
JIT-Exception:
System.InvalidCastException: Unable to cast object of type 'System.Windows.Forms.MouseEventArgs' to type 'System.Windows.Forms.LinkLabelLinkClickedEventArgs'.
当我更改事件处理程序以使用MouseEventsArgs
时,我不会遇到任何问题
:
Private Sub lnkDoc_LinkClicked(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles lnkDoc.Click
Process.Start(....)
End Sub
问题:
为什么Visual Studio会提供使用“LinkLabelLinkClickedEventArgs
”而不是所需的“mouseeEventArgs
”,我如何保护自己在将来避免此类错误
注意:
:提供LinkClicked事件的数据
:提供MouseUp、MouseDown和MouseMove事件的数据。它们都是两个不同的事件,分别是和。在“属性”框中,查看事件,您将看到,如果要自动生成方法,只需双击相应事件下的字段
见:
通常,当
用户单击控件中的链接。事件的事件处理程序
LinkClicked
事件被传递给
LinkLabelLinkClickedEventArgs
类,该类包含一个LinkLabel.Link
对象,该对象与单击的链接关联。你可以用
LinkLabel.Link的LinkData属性中指定的信息
类来确定单击了哪个链接或要执行的任务类型
单击链接时执行。例如,如果一个LinkLabel
控件
定义了一个LinkLabel.Link
对象,其LinkData属性设置为
字符串www.microsoft.com,您可以在事件中使用此信息
LinkClicked事件的处理程序以显示网站
您是否注意到您处理的是单击事件而不是LinkClicked
-事件?@TimSchmelter:确实如此。我至今没有注意到。我必须把注意力集中在生成的函数名上。现在它开始变得更有意义了;