Vì tôi khá mới đối với C#, tôi đấu tranh với đoạn mã sau đây. Khi tôi bấm vào nút 'knop', phương thức 'klik' phải được thực thi. Phương thức này phải vẽ bitmap 'b', được tạo bởi 'DrawMandel' trên biểu mẫu. Nhưng tôi liên tục nhận được lỗi 'không có tình trạng quá tải cho phù hợp với đại biểu' system.eventhandler '.không quá tải cho các trận đấu đại biểu '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());
}
}
đại biểu handler cho sự kiện có một 'object sender, EventArgs e' danh sách đối số. Của bạn không. Và đối với bản ghi, tôi nghi ngờ một sự kiện 'Click' sẽ có' PaintEventArgs'. – BoltClock
Có vẻ như bạn đã đổi tên một phương thức OnPaint() thành klik và sau đó cố gắng nối nó với trình xử lý sự kiện nút. Xóa nhiệm vụ + = klik và từ trình thiết kế biểu mẫu, nhấp đúp vào nút và nó sẽ tạo Trình xử lý nút mới. – StuartLC
Đây là chương trình thử và lập trình lỗi. Sẽ có nhiều lỗi hơn, bạn không thể vẽ một bitmap và hy vọng nó sẽ tồn tại. Truy cập thư viện địa phương của bạn và xem một cuốn sách lập trình Winforms. –