LinkLabel.Click 和 LinkLabel.LinkClicked 事件之间的区别?

Posted

技术标签:

【中文标题】LinkLabel.Click 和 LinkLabel.LinkClicked 事件之间的区别?【英文标题】:difference between LinkLabel.Click and LinkLabel.LinkClicked event? 【发布时间】:2011-08-12 11:59:38 【问题描述】:

根据http://msdn.microsoft.com/en-us/library/system.windows.forms.linklabel.aspx,LinkLabel 类既有从System.Windows.Forms.Control 继承的Click 事件,也有LinkClicked 事件。据我了解,Click 事件会触发LinkClicked 事件。

到底为什么会有LinkClicked 事件? Click 事件有什么问题?除了点击还有其他触发LinkClicked的方法吗?

【问题讨论】:

Click 继承自 Control。您不能取消继承基类成员。 【参考方案1】:

Click 如果您单击控件中的任意位置,将被触发。 LinkClicked 仅在您单击链接区域时才会出现。 Click 在这两种情况下都会出现(如果您单击链接,则在 LinkClicked 之前)。

【讨论】:

另外,如果LinkLabel 具有焦点并且用户按Enter,则似乎只有LinkClicked 被调用。【参考方案2】:

LinkClicked 事件具有特定的LinkLabelLinkClickedEventArg,它允许您做的不仅仅是响应 Click 事件,用户单击控件上的任何位置而不仅仅是链接部分可以触发该事件。

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)

    // Specify that the link was visited.
    this.linkLabel1.LinkVisited = true;

    var target = e.Link.LinkData as string;
    System.Diagnostics.Process.Start(target);

【讨论】:

以上是关于LinkLabel.Click 和 LinkLabel.LinkClicked 事件之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章

哈工大 计算机系统 实验五

& 和 && 区别和联系,| 和 || 区别和联系

第三十一节:扫盲并发和并行同步和异步进程和线程阻塞和非阻塞响应和吞吐等

shell中$()和 ` `${}${!}${#}$[] 和$(()),[ ] 和(( ))和 [[ ]]

Java基础8---面向对象代码块和继承和this和super和重写和重载和final

Java基础8---面向对象代码块和继承和this和super和重写和重载和final