C# 如何在单击按钮时调用方法?

C# 如何在单击按钮时调用方法?,c#,C#,从windows窗体中单击按钮,该按钮不起作用 因为,我必须使用参数“Graphics g…”作为方法。我无法更改方法,因此,当用户单击按钮时,我必须更改一些内容 代码如下: public partial class Form1 : Form { public Form1() { InitializeComponent(); } //protected override void OnPaint(PaintEventArgs e) //{

从windows窗体中单击按钮,该按钮不起作用

因为,我必须使用参数“Graphics g…”作为方法。我无法更改方法,因此,当用户单击按钮时,我必须更改一些内容

代码如下:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

//protected override void OnPaint(PaintEventArgs e)
    //{
    //    Graphics g = e.Graphics;
    //    TekenCirkel(g, 50, 50, 100, 100);
    //    TekenRechthoek(g, 0, 0, 100, 100);
    //}

    public void TekenCirkel(Graphics g, int x, int y, int w, int h) {
        Pen cirkel = new Pen(Color.Blue, 2);
        g.DrawEllipse(cirkel, x,y, w, h);
    }

    public void TekenRechthoek(Graphics g, int x, int y, int w, int h){
        Pen rechthoek = new Pen(Color.Black, 2);
        g.DrawRectangle(rechthoek, x, y, w, h);
    }

    private void Cirkel_Click(object sender, EventArgs e)
    {

        TekenCirkel(g, 50, 50, 100, 100);
    }
}
正如您所看到的,我使用onPaint方法对其进行了测试,并定义了g的功能。使用此方法时,代码可以正常工作。但在尝试单击按钮时,这是不可能的。因为EventArgs和PaintEventArgs是不同的东西


E:单击一个按钮,表单上会画一个圆环/正方形。我想知道如何调用我创建的方法来绘制圆环/正方形。

这不是绘画的工作方式

您必须仅绘制
OnPaint()
中的所有内容,使用类中的数据结构跟踪要绘制的内容


然后调用
Invalidate(),所以你不必这样做(尽管我同意这是一个更整洁的解决方案)@TimothyGroote:直到有东西重新画出你的形状,在这一点上它就会破裂。这就是为什么这样更好;)@SupremeLeader:是的,通过
Invalidate()
@SupremeLeader:您需要随时跟踪您想要绘制的所有内容。您可能需要某个类的列表。