首页 > 解决方案 > 在没有视觉工作室设计师的情况下绘制形状。形状未显示且事件未触发

问题描述

我只是想在不使用 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% 肯定。而且我经验丰富,我只是习惯于统一编写,但从那里到纯代码的过程对我来说一直很困难。

标签: c#

解决方案


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


推荐阅读