2

当用户浏览字段时,他们必须浏览 LinkLabel 才能进入下一个字段。我宁愿他们直接从一个领域到另一个领域,而不是在 LinkLabel 上停留。但是,在 .NET 3.5 中,LinkLabel 没有设置为 false 的 TabStop 属性。升级到 .NET 4.0 或 .NET 4.5 现在不是一种选择。

我尝试了另外两种可能的方法来跳过不起作用的 LinkLabel。

  1. 将 LinkLabel 放在面板上并将面板上的 TabStop 属性设置为 false。LinkLabel 仍然被选项卡到。

  2. 处理 LinkLabel 上的 Enter 事件,使用 SendKeys 之类的废话继续下一个控件。这不起作用,因为它使 Click 事件停止触发。

我还考虑将表单上所有 LinkLabels 的 TabIndex 设置为比其他控件高得多的值。但是,这也行不通

每个字段都是面板上带有标签的 TextBox 或 ComboBox。ComboBox 字段在面板上有一个附加控件:一个显示“编辑项目”的 LinkLabel。这些面板中的每一个都位于主 FlowLayoutPanel 上。

如我错了请纠正我。我理解嵌套面板上控件的选项卡顺序的方式是每个面板都有自己的选项卡顺序。然后根据每个Panel的TabIndex依次组合每个的Tab顺序,确定窗体上控件的有效Tab顺序。正确的?因此,按照我的看法,将每个 LinkLabel 的 TabIndex 设置为 200 秒的数字并不能解决原始问题。

有人见过这个挑战吗?你是怎么解决的?我觉得我可能必须做一些激烈的事情,比如将 LinkLabel 控件子类化。你会怎么做?

4

2 回答 2

10

这是一个错误,LinkLabel 继承自 Label,它没有有意义的聚焦支持。因此该属性隐藏在“属性”窗口中,就像标签一样。.NET 4.0 纠正了这个错误。

这不是一个真正的问题,该物业仍然可用。只需在代码中设置它:

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        linkLabel1.TabStop = false;
    }
    // etc..
}

请注意,该属性对于 IntelliSense 也是隐藏的,所以不要对您没有获得帮助感到惊讶。

于 2014-07-18T18:50:53.590 回答
2

使用LinkLabel,我们应该通过代码设置 TabStop 属性,不能通过更改属性窗口来设置。

当 VisualStudio 从 GUI 生成代码时,它会这样做:

this.linkbThread.TabIndex = 31;        //first
this.linkbThread.Text = "My URL";      //second

MSDN说:

“但是,请注意,将新链接添加到 Links 集合将自动将 TabStop 属性再次设置为 true。”

因此,如果我们更改属性窗口中的 TabStop 属性,或者 在分配 linkbThread.Text = "My URL"之前插入代码linkbThread.TabStop = false,则它不起作用。

于 2015-07-29T03:25:56.017 回答