2017-07-08 1 views
-1

Für eines meiner Projekte muss ich ein Programm schreiben, das eine Liste von Produkten mit einem Scheck und/oder Kreuz von links zeigt. Ich habe alles außer den Formen sortiert Teil ich auf dieses Problem gekommen sind:Windows Forms in C# Fehler

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); 

    } 
} 

Es mir den Fehler gibt, der sagt:

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' 

Kann mir jemand einen Grund legen nahe, warum dies geschehen könnte, und geben ich Ratschläge, wie man es beheben kann?

+1

Wenn Sie das Ereignis anhängen, rufen Sie 'Window_Paint' mit null Argumenten auf. Entfernen Sie die Klammern: Sie möchten Ihren Handler zu diesem Zeitpunkt nicht aufrufen. – Richard

+0

_Graphics zeichnen = Window.CreateGraphics(); _ und _Graphics zeichnen = Window.CreateGraphics(); _ Tun Sie das nie! Das Ergebnis wird nicht bestehen bleiben! Verwende die 'e.Graphics' aus den' PaintArgs' die du schon hast !! - Verwenden Sie nie 'control.CreateGraphics'! Versuchen Sie niemals ein 'Graphics' Objekt zu cachen! Zeichnen Sie entweder mit Hilfe eines 'Graphics g = Graphics.FromImage (bmp)' oder im 'Paint' -Ereignis eines Steuerelements in eine' Bitmap bmp'. Verwenden Sie dazu den 'e.Graphics' Parameter. – TaW

+0

Sie können die Beständigkeit Ihres Grafiken durch Ausführen einer Minimize/Maximize-Sequenz. – TaW

Antwort

1

nicht

Object.Event += Method(); 

aber

Object.Event += Method; 

stattdessen schreiben.

Der Eventlistener benötigt einen Verweis auf die Methode, um den Delegaten zu verwenden, nicht auf den Rückgabewert der Methode selbst. Dies erklärt Ihren Fehler.