2013-10-17 38 views
0

我有一個ToolStripButton,CheckOnClick屬性設置爲true。當它被點擊時,Checked屬性變爲true,並且圍繞該按鈕出現藍色邊框,並且只要處於選中狀態,它就會一直保持在那裏。我想刪除此邊框,因爲我自己更改背景顏色以指示該按鈕已被選中。我怎麼能這樣做?我試着用ToolStripRenderer,但是我找不到方法。如何刪除ToolStripButton的勾選藍色矩形

+0

將焦點移到另一個控件/或點擊事件的形式。 – OneFineDay

+0

感謝您的回答,但它不起作用。我有幾個這樣的按鈕,並且所有那些將其屬性Checked設置爲true的邊界出現,無論焦點在哪裏。 – DanielB

回答

0

實施你自己的ToolStripRenderer應該給你你要找的。我對使用這些技術並不熟悉,但我能夠通過以下實現獲得我相信您正在尋找的功能。

Public Class BorderlessToolStripRenderer 
    Inherits Windows.Forms.ToolStripProfessionalRenderer 

    Protected Overrides Sub OnRenderButtonBackground(e As System.Windows.Forms.ToolStripItemRenderEventArgs) 
     Dim button = TryCast(e.Item, ToolStripButton) 

     If (button IsNot Nothing AndAlso button.Checked) Then 
      e.Graphics.Clear(Color.Yellow) 
     Else 
      MyBase.OnRenderButtonBackground(e) 
     End If 

    End Sub 

End Class 

我假設你正在使用ToolStripProfessionalRenderer,所以我繼承了一個,只是省略了標準的背景渲染時按鈕處於選中狀態。這將鼠標懸停在指示器上,但在選中時忽略邊框,而是呈現黃色背景。

和當然,要使用這個類,你只需要設置Renderer財產上的ToolStrip這樣

Me.ToolStrip1.Renderer = New BorderlessToolStripRenderer() 
+0

謝謝傑森!它的工作,但現在我有一個新的瘋狂的問題。 Graphcis.Clear方法只適用於預定義的系統顏色(至少在文檔中有說明),但我想將背景顏色設置爲Color.FromArgb(227,227,227)(這是一個要求),這使得看起來像按鈕像按下3D效果。 Color結構中沒有預定義的常量接近該顏色。我只是簡單地想用沒有藍色邊框的顏色設置背景,但是它顯示爲一個巨人的作品;) – DanielB

+0

最後,我將CheckOnClick設置爲false,並在派生類中創建了自己的Shadows Checked屬性。 – DanielB

+0

嘿丹尼爾。聽起來你已經有了一個適合你的解決方案,但你也知道,用e.Graphics.Clear(Color.FromArgb(227,227,227))代替clear調用應該可以正常工作。我試過了,它工作。 –