投稿者 tecc  (社会人) 投稿日時 2010/8/6 10:18:47

また雑談カテです。すいません。

protected override void OnPaint(PaintEventArgs e)
{
     //base.OnPaint(e);

     Graphics g = e.Graphics;
     LinearGradientBrush gb = new LinearGradientBrush
         (new Point(0, 0), new Point(this.ClientSize.Width, this.ClientSize.Height),
     Color.WhiteSmoke, Color.SkyBlue);

     gb.GammaCorrection = true;
     g.FillRectangle(gb, this.ClientRectangle);

     gb.Dispose();
     g.Dispose();
}

private void mainmenu_Load(object sender, EventArgs e)
{
System.Reflection.Assembly asm =
System.Reflection.Assembly.GetExecutingAssembly();
System.Version ver = asm.GetName().Version;
this.toolStripStatusLabel1.Text = string.Format("システムバージョン:{0}",ver.ToString());
                
this.SetStyle(ControlStyles.ResizeRedraw, true);
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
}


こんな感じでフォームのクライアント領域の色を変更してるんですが
その際、フォームがアクティブ?になる度にOnPaintイベントが発生します。
正しい、動きなのでしょうがアクティブになる度にグラフィック描写してはコスパ的に気になってきました。

実際、このOnPaintイベントの発生を1回目以降イベントを起こさないようにしてしまった場合
何らかの不具合がでますでしょうか?