由于我对C#很陌生,所以我在使用下面的代码。当我点击按钮'knop'时,必须执行方法'klik'。该方法必须在窗体上绘制由'DrawMandel'生成的位图'b'。但我不断得到错误'没有重载代表'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());
}
}
答案 0 :(得分:52)
您需要将public void klik(PaintEventArgs pea, EventArgs e)
更改为public void klik(object sender, System.EventArgs e)
,因为没有带参数Click
的{{1}}事件处理程序。
答案 1 :(得分:6)
是的,Click事件处理程序(klik)存在问题 - 第一个参数必须是对象类型,第二个参数必须是EventArgs。
public void klik(object sender, EventArgs e) {
//
}
如果要在表单或控件上绘制,请使用CreateGraphics
方法。
public void klik(object sender, EventArgs e) {
Bitmap c = this.DrawMandel();
Graphics gr = CreateGraphics(); // Graphics gr=(sender as Button).CreateGraphics();
gr.DrawImage(b, 150, 200);
}
答案 2 :(得分:4)
您需要包含按钮单击处理程序以匹配模式
public void klik(object sender, EventArgs e)
答案 3 :(得分:2)
按如下方式更改klik方法:
public void klik(object pea, EventArgs e)
{
Bitmap c = this.DrawMandel();
Button btn = pea as Button;
Graphics gr = btn.CreateGraphics();
gr.DrawImage(b, 150, 200);
}