2009-07-18 43 views
0

我最近在Visual Studio 2008中啓動了一個WinForms項目,我注意到當我禁用一個命令按鈕時,它將按鈕變平並將文本保持爲黑色。這與我在VB6和VS2005中按鈕簡單變成灰色的經驗相比,是一個意想不到的改變。是否可以在Visual Studio 2008中設置命令按鈕以使3D禁用圖形?

是否有一個設置可以讓我使命令按鈕3D的禁用狀態與啓用狀態一樣?我有FlatStyle設置爲標準,但系統結果相同的行爲。我還注意到,UseVisualStyleBackColor需要設置爲True才能使按鈕在其Enabled狀態下正確顯示。

任何幫助,非常感謝。

回答

1

按鈕的繪畫代碼在內部類中被嚴格鎖定,您不能覆蓋它並重新使用它。公共ButtonRenderer類不處理禁用的按鈕。

有一件事可以用BackgroundImage屬性玩遊戲。爲您的項目添加一個新類並粘貼下面顯示的代碼。將新控件從工具欄的頂部拖放到表單上。

using System; 
using System.Drawing; 
using System.Windows.Forms; 

public class MyButton : Button { 
    protected override void OnSizeChanged(EventArgs e) { 
    base.OnSizeChanged(e); 
    Bitmap bmp = new Bitmap(this.Width, this.Height); 
    using (Graphics gr = Graphics.FromImage(bmp)) { 
     ButtonRenderer.DrawButton(gr, 
     new Rectangle(0, 0, bmp.Width, bmp.Height), 
     System.Windows.Forms.VisualStyles.PushButtonState.Normal); 
    } 
    if (this.BackgroundImage != null) this.BackgroundImage.Dispose(); 
    this.BackgroundImage = bmp; 
    } 
} 
+0

它非常接近。新按鈕的確處於禁用狀態下的3D,但周圍有一個奇怪的白色邊框,就好像標準狀態圖像正在覆蓋禁用狀態一樣。然而,稍微玩一下,我認爲它會很好地工作。 謝謝! – 2009-07-20 19:09:14

相關問題