无需Visual Studio设计师即可绘制形状。形状未显示且事件未触发

时间:2019-04-24 22:29:31

标签: c#

我只是试图在不使用Visual Studio功能的情况下绘制某些形状,大多数教程都使用该形状,因此我有理由确保编码是不同的,因此,最后的要求是在这里提出。

遵循一些没有使用任何视觉工作室的表格指南(是的,我知道使用它会容易得多,但是过去使用这些东西已经使我感到困惑,所以想学习而不使用它)形状等,但是当涉及到实际绘制形状时,我碰壁了。

根据我的判断,我做了一些调试,该事件根本不会触发。主函数中的图形代码不执行任何操作,仅显示空白表格。 我在内部代码和事件代码上都尝试了几种变体,它们在代码中都是可见的,我还尝试使用事件的变体,该变体使用了“发送者”参数,不知道是否进行了更改,所不同的是,他们都没有开除。

using System;
using System.Windows.Forms;
using System.ComponentModel;
using System.Drawing;
using System.Workflow.ComponentModel;

class Genetics : Form
{

    public static Form form1;
    static void Main(string[] args)
    {

        form1 = new Form();
        form1.Size = new Size(800, 800);

        Pen blackpen = new Pen(Color.Black, 10);
        Graphics G = form1.CreateGraphics();

        G.DrawRectangle(blackpen, form1.Width - form1.Width / 2, form1.Width - form1.Width / 2, 300, 300);

      form1.CreateGraphics().DrawRectangle(blackpen, form1.Width -    form1.Width / 2, form1.Width - form1.Width / 2, 300, 300);

        Application.Run(form1);


    }

    protected override void OnPaint(PaintEventArgs e)
    {        
        Graphics graphics;
        graphics = form1.CreateGraphics();

        Pen mypen = new Pen(Color.Black, 5);

        graphics.DrawLine(mypen, 20, 20, 200, 210);

        e.Graphics.DrawRectangle(mypen, 20, 20, 200, 210);

    }


}

我没有收到任何错误或任何内容,只是...除了显示表格之外,什么也不做,但这只是最低限度的一点。

我知道这很容易解决,但是同样,所有教程都使用Visual Studio表单,并且不确定代码是否不同。由于我已经尝试直接复制该代码并且它给了我错误,因此我认为我是正确的,但不是100%肯定。 而且我经验丰富,我习惯于统一编写,但是从那儿到纯代码的过程对我来说却很困难。

1 个答案:

答案 0 :(得分:0)

就算我以外的人正在寻找这个东西,问题也有两点: 1,事件没有连接任何东西,所以我需要添加这样的一行:

[Form variable].[form event] += new PaintEventHandler([Class].[Method with an object sender and an event argument]
//Example of that
form1.Paint += new PaintEventHandler(Genetics.Paint);

否则,由于方法和事件未连接,因此不会发生任何事情。

2,主要是重复的注释,我需要在事件中具有所有绘制函数,因为在实际运行应用程序之前,它们没有任何绘制对象。然后,只需使这些事件中的代码无效,以强制重新绘制表单即可。