2009-07-18 2 views
0

私は最近、Visual Studio 2008でWinFormsプロジェクトを開始しました。コマンドボタンを無効にすると、ボタンが平らになりテキストが黒くなります。これは、VB6とVS2005の私の経験から予期せぬ変更であり、ボタンが消えてしまいます。Visual Studio 2008でコマンドボタンで3D無効グラフィックを設定することはできますか?

有効な状態のようにコマンドボタン3Dの無効な状態を設定できる設定はありますか? FlatStyleはStandardに設定されていますが、Systemの結果は同じです。また、ボタンがEnabled状態で正しく表示されるためには、UseVisualStyleBackColorをTrueに設定する必要があることに気付きました。

ご協力いただきまして誠にありがとうございます。

答えて

1

ボタンのペイントコードが内部クラスできちんとロックされているため、オーバーライドしたり、再利用することはできません。 public ButtonRendererクラスは、無効化されたボタンを処理しません。

働くことができることの1つは、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ですが、まるで標準状態画像が無効状態でオーバーレイされているかのように、その周りに奇妙な白い境界線があります。しかし、ちょっとしたことで私は完璧に動作すると思います。 ありがとう! –

関連する問題