在事件中使用paint重绘方法,不能成功,为啥呢😂
private void button1_Click(object sender, EventArgs e)
{
label1.Paint += MyPaintHandler;
}
public void MyPaintHandler(object sender, PaintEventArgs e)
{
int i = 0;
i = 2;
i = 3;
}
在这段代码中,虽然已经将MyPaintHandler方法绑定到label1的Paint事件上,但是在MyPaintHandler方法中并没有进行任何绘制操作,而只是简单地对一个变量进行了赋值操作。因此,重绘操作并不会触发。
如果想要在Paint事件中使用PaintEventArgs参数进行绘制操作,可以在MyPaintHandler方法中使用Graphics对象进行绘制。例如,可以使用以下代码:
望采纳🥰🥰🥰
private void button1_Click(object sender, EventArgs e)
{
label1.Paint += MyPaintHandler;
}
public void MyPaintHandler(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
Pen pen = new Pen(Color.Red, 2);
g.DrawLine(pen, 0, 0, 100, 100);
}
上述代码中,首先将MyPaintHandler方法绑定到label1的Paint事件上。在MyPaintHandler方法中,通过PaintEventArgs参数获取到Graphics对象,然后创建一个Pen对象,并使用Graphics对象的DrawLine方法进行绘制。这样,当label1重绘时,就会触发MyPaintHandler方法进行绘制操作。
这就好比你在代码里动态的给button注册了一个click事件,但是要等到button按下的时候事件函数才会执行
重绘事件也一样
什么时候注册是你的权利
什么时候执行不是代码控制的,要看具体的操作
你可以用对label1的任意修改来触发它的paint事件,参考下面的代码。
private void Form1_Load(object sender, EventArgs e) {
label1.Paint += MyPaintHandler;
}
private void button1_Click(object sender, EventArgs e) {
label1.Text = "OK";
}
public void MyPaintHandler(object sender, PaintEventArgs e) {
int i = 0;
i = 2;
i = 3;
Console.WriteLine(i);
}
本人新手,想实现能自由控制paint事件的触发,比如在单击事件后才执行paint事件。现找到一个好办法可以执行了,感谢各位的回答,给予了我很大帮助。使用了this.Refresh()方法来强制绘制,能正常触发事件了
private void button3_Click(object sender, EventArgs e)
{
NTC_Label1.Paint += Mypaints.label_Paint_Red;
this.NTC_Label1.Refresh();
NTC_Label2.Paint += Mypaints.label_Paint_Red;
this.NTC_Label2.Refresh();
}