2010-11-13 89 views

回答

7

出現在您按鈕上的矩形稱爲「焦點矩形」。它指示表單上的哪個控件當前具有輸入焦點。

對於您遇到的問題的解釋是,即使該按鈕不是製表符,它仍然會變爲,如果用鼠標點擊該選項,它仍會變爲,因此焦點矩形仍會出現。 TabStop屬性僅管理該控件是否可以通過標籤鍵獲得焦點,而不管用戶是否可以選擇該焦點。

焦點矩形對向用戶指示哪個控件具有焦點很有用。按輸入空格鍵按鈕被選中將導致按鈕被「推」。沒有焦點矩形,鍵盤用戶很難瀏覽你的應用程序。

如果您只是想防止按鈕獲得焦點(從而防止焦點矩形出現),您可以將其Enabled屬性設置爲False。當然,這也會阻止用戶點擊按鈕。

如果您希望該按鈕保持可點擊的狀態,但在焦點位置防止繪製矩形(以犧牲程序的可用性爲代價)時,您必須創建自己的自定義控件,該控件源自現有的Button控制。在您的控制中,您可以覆蓋ShowFocusCues propertyTrue默認爲Button控件)以返回False。例如:

public class NoFocusButton : Button 
{ 
    protected override bool ShowFocusCues 
    { 
     get 
     { 
       return false; 
     } 
    } 
} 

或者,您可以在派生按鈕控件中覆蓋OnPaint事件。這將允許您完全控制您的按鈕的繪製方式(包括移除焦點矩形),其中帶有與獎勵一樣多的風險。有關此路線的更多信息,請參見this answer to another question

+0

非常感謝。根據你說的我發佈了我的解決方案。 – priyamtheone 2010-11-16 14:45:52

0
 
class CustomButton : System.Windows.Forms.Button 
    { 
     private bool _DisplayFocusCues = true; 
     protected override bool ShowFocusCues 
     { 
      get 
      { 
       return _DisplayFocusCues; 
      } 
     } 

     public bool DisplayFocusCues 
     { 
      get 
      { 
       return _DisplayFocusCues; 
      } 
      set 
      { 
       _DisplayFocusCues = value; 
      } 
     } 
    } 

使用此類,您可以在設計時設置DisplayFocusCues。