2014-07-18 20 views
1

當用戶選中字段時,他們必須通過LinkLabel選項卡才能進入下一個字段。我寧願他們直接從場地到場地,而不停在LinkLabel上。但是,在.NET 3.5中,LinkLabel沒有將TabStop屬性設置爲false。升級到.NET 4.0或.NET 4.5不是今天的選擇。如何在使用.NET 3.5時將LinkLabel作爲製表符刪除?

我試過兩種其他可能的方式來跳過LinkLabel,不起作用。

  1. 將LinkLabel放在面板上,並將面板上的TabStop屬性設置爲false。 LinkLabel仍然得到選項卡。

  2. 在LinkLabel上處理Enter事件,並使用SendKeys或一些這樣的廢話繼續到下一個控件。這不起作用,因爲它使Click事件停止觸發。

我還考慮將窗體上所有LinkLabel的TabIndex設置爲比其餘控件高得多的值。但是,這也行不通

每個字段都是帶有標籤的面板上的Te​​xtBox或ComboBox。 ComboBox字段在面板上有一個額外的控件:一個LinkLabel,表示「編輯項目」。每個面板均位於主FlowLayoutPanel上。

糾正我,如果我錯了。我理解嵌套面板上控件的Tab順序的方式是每個Panel都有自己的Tab順序。然後,根據每個面板的TabIndex將每個面板的Tab鍵順序組合在一起,以確定窗體上控件的有效Tab鍵順序。對?因此,將每個LinkLabel的TabIndex設置爲高200的數字並不能解決原始問題,就像我看到的那樣。

有沒有人見過這個挑戰?你是如何解決它的?我覺得我可能不得不做一些類似LinkLabel控件的子類。你會怎麼做?

回答

7

這是一個錯誤,LinkLabel繼承自標籤,它沒有有意義的聚焦支持。因此,該屬性隱藏在「屬性」窗口中,就像標籤一樣。 .NET 4.0糾正了這個錯誤。

這不是一個真正的問題,財產仍然可用。只需設置它,而不是代碼:

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

注意,屬性也隱藏了智能感知,所以不要感到驚訝,你沒有得到幫助。

+0

這真是太棒了。這就是爲什麼我喜歡stackoverflow。謝謝。 –

1

With LinkLabel,我們應該通過代碼設置TabStop屬性,不能通過更改屬性Windows來設置。

當VisualStudio中從GUI生成代碼,它這樣做:

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

MSDN說:

「不過,請注意,添加新的鏈接,鏈接集合將 自動設置TabStop屬性再次爲true。「

因此,如果我們改變屬性Windows tab屬性,或分配linkbThread.Text =前插入代碼linkbThread.TabStop =假‘我的網址’,但沒有奏效。

+0

謝謝,很好! – Paya

相關問題