首页 文章

如何在使用.NET 3.5时删除LinkLabel作为制表位?

提问于
浏览
2

当用户在字段中进行选项卡时,他们必须通过LinkLabel选项卡才能转到下一个字段 . 我宁愿他们直接从一个地方到另一个地方而不停在LinkLabel上 . 但是,在.NET 3.5中,LinkLabel没有将TabStop属性设置为false . 升级到.NET 4.0或.NET 4.5不是今天的选择 .

我已经尝试了另外两种跳过LinkLabel的方法 .

  • 将LinkLabel放在面板上,并将面板上的TabStop属性设置为false . LinkLabel仍然会被标记为 .

  • 处理LinkLabel上的Enter事件并使用SendKeys或某些此类废话继续下一个控件 . 这不起作用,因为它使Click事件停止触发 .

我还考虑将窗体上所有LinkLabel的TabIndex设置为比其他控件高得多的值 . 但是,这也行不通

每个字段都是带有Label的面板上的TextBox或ComboBox . ComboBox字段在面板上有一个额外的控件:一个名为“编辑项目”的LinkLabel . 这些面板中的每一个都在主FlowLayoutPanel上 .

如我错了请纠正我 . 我理解嵌套面板上控件的Tab键顺序的方式是每个Panel都有自己的Tab Order . 然后根据每个Panel的TabIndex将每个的Tab键顺序组合在一起,以确定表单上控件的有效Tab键顺序 . 对?因此,将每个LinkLabel的TabIndex设置为高200s的数字将无法解决原始问题,就像我看到的那样 .

以前有人见过这个挑战吗?你是怎么解决的?我觉得我可能要像LinkLabel控件那样做一些激烈的事情 . 你会怎么做?

2 回答

  • 8

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

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

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

    请注意,该属性对于IntelliSense也是隐藏的,因此不要惊讶于您没有得到帮助 .

  • 1

    使用 LinkLabel ,我们应该按代码设置TabStop属性,不能通过更改属性Windows进行设置 .

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

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

    MSDN说:

    “但是,请注意,向Links集合添加新链接会自动将TabStop属性设置为true . ”

    因此,如果我们在属性Windows中更改TabStop属性,或者在分配linkbThread.Text = "My URL"之前插入代码linkbThread.TabStop = false,则无法使用它 .

相关问题