2017-07-08 10 views
-1

私のプロジェクトの1つとして、チェックのついた製品のリストを表示するプログラムを書く必要があります。それは私に言うエラーが発生しますC#エラーのWindowsフォーム

class Presentation 
{ 
    static Form Window = new Form(); 
    static public void Configuration() 
    { 
     Window.Height = 800; 
     Window.Width = 800; 
     Window.Text = "Homework"; 

     Graphics draw = Window.CreateGraphics(); 

     Window.Paint += Window_Paint(); 

     Window.Show(); 
    } 
    void Window_Paint(System.Object sender, PaintEventArgs e) 
    { 
     AnyOtherConfigurations(e); 
    } 
    static public void AnyOtherConfigurations(PaintEventArgs e) 
    { 
     Pen pen1 = new Pen(Color.Red); 
     Font font = new Font(FontFamily.GenericSansSerif, 8, 
     FontStyle.Regular, GraphicsUnit.Millimeter); 
     Graphics draw = Window.CreateGraphics(); 
     e.Graphics.FillEllipse(new SolidBrush(Color.Yellow),x,y,80,80); 
     draw.DrawRectangle(pen1, 0, 0, 90, 90); 

    } 
} 

:私は、私はこの問題に遭遇してきた一部 フォームを除いてソートされたすべてのものを持っている

CS7036 There is no argument given that corresponds to the required formal parameter 'sender' of 'UserQuery.Presentation.Window_Paint(object, PaintEventArgs)' 
CS0029 Cannot implicitly convert type 'void' to 'System.Windows.Forms.PaintEventHandler' 

誰もがこれが起こっかもしれない理由を示唆して与えることができます私はそれを修正する方法のアドバイス?

+1

イベントをアタッチすると、引数がゼロの 'Window_Paint'が呼び出されます。不安定さを取り除いてください。この時点でハンドラを呼びたくはありません。 – Richard

+0

_Graphics draw = Window.CreateGraphics(); _と_Graphics draw = Window.CreateGraphics(); _決してこれを実行しないでください!結果は維持されません!すでに持っている 'PaintArgs'の' e.Graphics'を使ってください!! - 決して 'control.CreateGraphics'を使用しないでください! 'Graphics'オブジェクトをキャッシュしないでください! 'Graphics g = Graphics.FromImage(bmp)'を使用して 'Bitmap bmp'に描画するか、' e.Graphics'パラメータを使用してコントロールの 'Paint'イベントに描画します。 – TaW

+0

あなたの永続性をテストできます。最小化/最大化シーケンスを実行してグラフィックスを作成します。 – TaW

答えて

1

ではなく

Object.Event += Method(); 

しかし

Object.Event += Method; 

を書いてはいけません。

eventlistenerは、メソッド自体の戻り値ではなく、デリゲートを使用するメソッドへの参照を必要とします。これはあなたのエラーを説明します。

関連する問題