C# 绘制矩形不';行不通

C# 绘制矩形不';行不通,c#,forms,graphics,drawing,shape,C#,Forms,Graphics,Drawing,Shape,你能解释一下这个代码有什么问题吗?因为它没有画任何东西。 它不应该在我的表格中画一个矩形吗?谢谢 public partial class Form1 : Form { public Form1() { InitializeComponent(); Graphics g = this.CreateGraphics(); Rectangle r = new Rectangle(0, 0, 150, 150); g.

你能解释一下这个代码有什么问题吗?因为它没有画任何东西。 它不应该在我的表格中画一个矩形吗?谢谢

  public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        Graphics g = this.CreateGraphics();
        Rectangle r = new Rectangle(0, 0, 150, 150);
        g.DrawRectangle(System.Drawing.Pens.Black, r);
    }
}

使用
OnPaint
方法进行绘制:

protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);
    Graphics g = e.Graphics;
    Rectangle r = new Rectangle(0, 0, 150, 150);
    g.DrawRectangle(System.Drawing.Pens.Black, r);
}

不要使用
CreateGraphics
。你不能让它保持刷新。它正在工作…在曲面刷新之前,您没有时间看到它。请将此代码(不带Creategraphics)移动到Paint事件。并确保前面没有控制装置(面板)。虽然这可能有效……但这是一个糟糕的建议。在
表单
中重写
OnPaint
是个坏主意。最好将控件添加到渲染的窗体中。如果没有愚蠢的练习,这可能会带来糟糕的长期结果。@DonBoitnott我不知道OP想要实现什么,我只是简单地指出,使用控件(在本例中是
表单
)的正确方法是使用
OnPaint
方法。我应该添加什么控件?看看方法。