Ponieważ jestem całkiem nowy w C#, mam problem z następującym kodem. Kiedy klikam przycisk "knop", należy wykonać metodę "klik". Metoda musi narysować bitmapę "b" wygenerowaną przez "DrawMandel" na formularzu. Ale ciągle otrzymuję komunikat o błędzie "nie ma przeciążenia dla delegatów meczów" system.eventhandler ".brak przeciążenia dla meczów delegate 'system.eventhandler'
using System;
using System.Windows.Forms;
using System.Drawing;
class Mandelbrot : Form
{
public Bitmap b;
public Mandelbrot()
{
Button knop;
knop = new Button();
knop.Location = new Point(370, 15);
knop.Size = new Size(50, 30);
knop.Text = "OK";
this.Text = "Mandelbrot 1.0";
this.ClientSize = new Size(800, 800);
knop.Click += this.klik;
this.Controls.Add(knop);
}
public void klik(PaintEventArgs pea, EventArgs e) {
Bitmap c = this.DrawMandel();
Graphics gr = pea.Graphics;
gr.DrawImage(b, 150, 200);
}
public Bitmap DrawMandel()
{
//function that creates the bitmap
return b;
}
static void Main() {
Application.Run(new Mandelbrot());
}
}
obsługi zdarzeń delegaci mają 'object sender, EventArgs e' listę argumentów. Twój nie. W przypadku płyty wątpię, aby zdarzenie "Click" miało nazwę "PaintEventArgs". – BoltClock
Wygląda na to, że zmieniono nazwę metody OnPaint() na klik, a następnie próbowano podłączyć ją do obsługi zdarzeń przycisku. Usuń + = przypisanie kliknięcia, a od projektanta formularzy dwukrotnie kliknij przycisk i utworzy nowy Button Handler. – StuartLC
To jest programowanie próbne i błędów. Będzie o wiele więcej błędów, nie możesz po prostu narysować bitmapy i mieć nadzieję, że przetrwają. Odwiedź lokalną bibliotekę i sprawdź książkę do programowania WinForm. –