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,事件没有连接到任何东西,所以我需要添加这样的一行:
[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,主要是重复的评论,我需要在事件中拥有所有的绘制函数,因为在应用程序实际运行之前它们没有任何东西可以绘制。然后只需使这些事件中的代码无效,即可强制重绘表单。
推荐阅读
- python - 预先测试 xlsxwriter 是否能够在 Windows 下写入目标文件
- c# - 请求 OAuth 令牌不能使用代码,但可以使用 Postman
- prometheus - 特定时期的 Prometheus 计数查询
- html - 如何将日期固定在底部和依赖于文本的文本行中?
- java - List 中所有对角线元素的总和
- > 使用 java 流?
- python - 访问 DataFrameGroupBy 组(用于将它们传递给绘图)
- powerbi - 需要 Power BI 许可证
- javascript - 请使用动态数据帮助 react-pdf/renderer PDFViewer
- spring-kafka - Trace 和 Span 信息默认丢失 SeekToCurrentErrorHandler
- android - Kotlin 协程不等待网络结果返回