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

标签 c#

从 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:您单击一个按钮,然后在表单上绘制一个 cirkel/square。我想知道如何调用我创建的方法来绘制 cirkel/正方形。

最佳答案

绘画不是这样的。

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

然后,如果您想更改它,您可以调用 Invalidate() 使其重新绘制。

关于c# - 如何在单击按钮时调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47039843/

相关文章:

C# 甲骨文 : catch all exceptions relative to connectivity?

C# 查询 MySql 数据库不返回所有列

c# - visual studio XAML 设计器未加载

c# - 由于域文件夹重定向,在 Environment.SpecialFolder.Favorites 上调用 Directory.GetDirectories 时出现 DirectoryNotFoundException

java - X509Certificate 在 Java 中返回到 byte[],在 C# 中返回到 X509Certificate

c# - 将 Data 的 switch 语句重构为不同类型的数据

c# - 检查套接字是否在物理机上连接

C#:使用可空 bool 的空合并运算符给出(我认为的)不正确的结果

c# - -event- 只能出现在 += 或 -= 的左侧

c# - Windows 应用商店应用程序 - 枚举字体