按下回车键以单击 LinkLabel

3
如果我在.NET Winform上有一个链接标签,是否有任何方法可以在链接标签聚焦时,按下Enter键会导致该LinkLabel被点击?不幸的是,它似乎没有暴露KeyDown事件。 编辑:最简单的解决方案是使用PreviewKeyDown,如果有人偶然通过Google到这里。
2个回答

2
您可以创建自己的链接标签类,它扩展了 LinkLabel 并覆盖了 OnKeyUp 或 OnKeyDown 事件以捕获 ENTER 键按下事件。这样可以避免为每个添加到窗体上的链接标签重复编写代码。 例如:
public class LinkLabelEx : LinkLabel
{

    protected override void OnKeyUp(KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            e.SuppressKeyPress = true;
            e.Handled = true;
            OnLinkClicked(new LinkLabelLinkClickedEventArgs(new Link(0, this.Text.Length)));
        }
        else
        {
            base.OnKeyUp(e);
        }
    }

}

谢谢你的回答。我认为PreviewKeyDown可能是最好的选择,而我太愚蠢错过了它。大约一个小时后我的投票重置后,我会给你点赞。 - Adam Rackis
添加一个扩展方法不是更容易吗? - FreeAsInBeer
@FreeAslnBeer - 扩展方法很酷,但我正在寻找一个能够捕获按键按下事件的方法。不过我不知道它如何帮助到我。 - Adam Rackis
1
感谢您的精彩回答,如承诺一样加上+1 :) - Adam Rackis

0
使用一个函数来处理你的LinkLabel点击事件后面的逻辑。然后你可以使用keyDown事件来调用同样的函数。

谢谢你的回答,但是LinkLabel中没有KeyDown事件;这就是一开始的问题所在。不过幸运的是,我成功找到了PreviewKeyDown事件,它完美地解决了我的问题。 - Adam Rackis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,