如何在使用.net 3.5时删除作为选项卡停止符的LinkLabel

本文关键字:选项 LinkLabel 删除 net 5时 | 更新日期: 2023-09-27 18:13:28

当用户在字段中添加标签时,他们必须通过LinkLabel添加标签才能进入下一个字段。我宁愿他们直接从一个字段到另一个字段,而不停留在LinkLabel上。然而,在。net 3.5中,LinkLabel没有TabStop属性可以设置为false。现在还不能升级到。net 4.0或。net 4.5。

我已经尝试了另外两种不工作的跳过LinkLabel的方法。

  1. 将LinkLabel放在面板上,并将面板上的TabStop属性设置为false。LinkLabel的标签仍然是。

  2. 处理LinkLabel上的Enter事件,并使用SendKeys或其他无意义的东西继续到下一个控件。这不起作用,因为它使Click事件停止触发

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

每个字段都是面板上带有标签的TextBox或ComboBox。ComboBox字段在面板上有一个额外的控件:一个表示"编辑项"的LinkLabel。这些面板都在主FlowLayoutPanel上。

如果我错了请纠正我。我对嵌套面板上控件的选项卡顺序的理解是,每个面板都有自己的选项卡顺序。然后根据每个Panel的TabIndex将每个控件的选项卡顺序串联起来,以确定窗体上控件的有效选项卡顺序。对吧?因此,在我看来,将每个LinkLabel的TabIndex设置为高200s的数字并不能解决最初的问题。

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

如何在使用.net 3.5时删除作为选项卡停止符的LinkLabel

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

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

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

请注意,属性也是隐藏的智能感知,所以不要惊讶,你没有得到帮助。

对于LinkLabel,我们应该通过代码来设置TabStop属性,不能通过更改Windows属性来设置。

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

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

但是MSDN说:

"但是,请注意,向links集合添加新链接将会自动将TabStop属性设置为true。"

所以如果我们改变TabStop属性在属性窗口,或插入代码linkbThread。TabStop = false在assign linkbThread之前。Text = "My URL",无效