簡體   English   中英

C# WinForms - 未選擇表單時自定義按鈕不需要的邊框

[英]C# WinForms - custom button unwanted border when form unselected

我在C#Win表單中創建了一個自定義按鈕的問題。在選擇表單時,按鈕似乎很好,但只要我從“遠離”按鈕上出現邊框,就會出現在按鈕上的邊框。 發生這種情況的一個很好的例子是單擊桌面但表單仍然最大化以便您可以看到其內容。 可以在下面看到問題的圖像:

按鈕邊框問題

這不會發生在所有按鈕上,只有在先前單擊該按鈕時才會發生(一次只出現在一個按鈕上)。 這讓我相信這與按鈕焦點提示有關,但這些提示設置為 false。 邊框設置為 0,我也將制表位設置為 false。

有什么建議么?

當您處理自定義按鈕時,您應該設置:

button.TabStop = false;
button.FlatStyle = FlatStyle.Flat;
button.FlatAppearance.BorderSize = 0;

然后,由於ButtonBase不支持Color.Transparent上的邊框顏色,您可以通過設置 Argb 顏色來解決該問題:

button.FlatAppearance.BorderColor = Color.FromArgb(0, 255, 255, 255); //transparent

fuex 的回答理論上可以去除邊框,但是有一個 bug,有時按鈕在更改按鈕啟用狀態后仍然有焦點提示。

(我在 .Net 4.0 中遇到了這個錯誤,我不知道該錯誤在以后的版本中是否已修復)。

要解決此錯誤,您應該禁用ShowFocusCues屬性:

protected override bool ShowFocusCues => false; // return base.ShowFocusCues;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM