2016-04-15 18 views
0

Application.EnableVisualStyles();をプログラムで無効にすることはできますか?私は色付きのプログレスバーを持つことができるアプリケーションの特定の部分のビジュアルスタイルをオフにしたいと思っていました。 System.Drawingを使用して描画することができますが、これを一時的に無効にすることができれば、これははるかに簡単です。これは可能ですか、それを描く必要がありますか?c#WinForms - プログラムApplication.EnableVisualStyles()をプログラムで無効にしますか?

+0

私は何をしようとするので、 – Rahul

+0

が、私はわからないとは思わないが、これは – GreatJobBob

+0

https://msdn.microsoft.com/en-us/library/system.windows.forms.visualstylesを助けるかもしれません.visualstylestate%28v = vs.110%29.aspx – GreatJobBob

答えて

0

私はMSDNのページをリンクするために、GreatJobBobにアクセスして、私が探していたものが次のようになりました。

using System.Windows.Forms.VisualStyles; 

    Application.VisualStyleState = VisualStyleState.NonClientAreaEnabled; 

これで、残りのコントロールとフォームを変更せずにプログレスバーの色を変更できます。

0

独自のプログレスバークラスを作成します。 Application.EnableVisualStylesを無効にすると、MessageBoxなどの他のUIで問題が発生します。ここでは、始めるための基礎的なクラスがあります。前景の色をあなたが望むものに変更するだけです。

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

class MyProgressBar : Control 
{ 
public MyProgressBar() 
{ 
    this.SetStyle(ControlStyles.ResizeRedraw, true); 
    this.SetStyle(ControlStyles.Selectable, false); 
    Maximum = 100; 
    this.ForeColor = Color.Red; //This is where you choose your color 
    this.BackColor = Color.White; 
} 
public decimal Minimum { get; set; } 
public decimal Maximum { get; set; } 

private decimal mValue; 
public decimal Value 
{ 
    get { return mValue; } 
    set { mValue = value; Invalidate(); } 
} 

protected override void OnPaint(PaintEventArgs e) 
{ 
    var rc = new RectangleF(0, 0, (float)(this.Width * (Value - Minimum)/Maximum), this.Height); 
    using (var br = new SolidBrush(this.ForeColor)) 
    { 
     e.Graphics.FillRectangle(br, rc); 
    } 
    base.OnPaint(e); 
} 
} 
関連する問題