在没有可视化工作室设计器的情况下绘制形状.形状不显示,事件不触发



我只是尝试在不使用Visual Studio功能的情况下绘制一些形状,大多数教程都使用它,并且我有理由确定编码因此而有所不同,所以最后的手段是在这里问。

遵循一些关于表单的指南,没有使用任何视觉工作室(是的,我知道使用它要容易得多,但是过去使用这样的东西让我很糟糕,所以想在没有的情况下学习)我制作了表单等等,但是当涉及到实际绘制形状时,我碰壁了。

我做了一些调试,根据我能够确定的情况,该事件根本不会触发。主函数中的图形代码什么都不做,只显示一个空白表单。 我在 in-main 代码和代码中可见的事件代码上尝试了几种变体,我还尝试使用使用"sender"参数的事件变体,不知道更改是否有任何区别,反正它们都没有触发。

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);
}

}

我没有收到任何错误或任何东西,它只是...除了显示表单之外,什么都不做,但这有点最低限度。

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

以防万一我以外的人正在寻找这个,问题是两件主要的事情: 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,主要是重复注释,我需要在事件中拥有所有绘制函数,因为在应用程序实际运行之前,它们没有任何可绘制的内容。然后,只需使这些事件中的代码无效,即可强制重新绘制表单。

最新更新