按Tab鍵時按鈕被聚焦時,一個矩形出現在 上。即使該按鈕的TabStop屬性設置爲false,當用鼠標單擊該按鈕時,該矩形也會出現。是否可以通過 停止出現矩形?請幫忙。問候。按鈕(.Net 2008,Framework 3.5)中的問題
3
A
回答
7
出現在您按鈕上的矩形稱爲「焦點矩形」。它指示表單上的哪個控件當前具有輸入焦點。
對於您遇到的問題的解釋是,即使該按鈕不是製表符,它仍然會變爲,如果用鼠標點擊該選項,它仍會變爲,因此焦點矩形仍會出現。 TabStop
屬性僅管理該控件是否可以通過標籤鍵獲得焦點,而不管用戶是否可以選擇該焦點。
焦點矩形對向用戶指示哪個控件具有焦點很有用。按輸入或空格鍵按鈕被選中將導致按鈕被「推」。沒有焦點矩形,鍵盤用戶很難瀏覽你的應用程序。
如果您只是想防止按鈕獲得焦點(從而防止焦點矩形出現),您可以將其Enabled
屬性設置爲False
。當然,這也會阻止用戶點擊按鈕。
如果您希望該按鈕保持可點擊的狀態,但在焦點位置防止繪製矩形(以犧牲程序的可用性爲代價)時,您必須創建自己的自定義控件,該控件源自現有的Button
控制。在您的控制中,您可以覆蓋ShowFocusCues
property(True
默認爲Button
控件)以返回False
。例如:
public class NoFocusButton : Button
{
protected override bool ShowFocusCues
{
get
{
return false;
}
}
}
或者,您可以在派生按鈕控件中覆蓋OnPaint
事件。這將允許您完全控制您的按鈕的繪製方式(包括移除焦點矩形),其中帶有與獎勵一樣多的風險。有關此路線的更多信息,請參見this answer to another question。
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。
非常感謝。根據你說的我發佈了我的解決方案。 – priyamtheone 2010-11-16 14:45:52