C# 在应用程序开始C处画十字#

C# 在应用程序开始C处画十字#,c#,.net,winforms,drawing,C#,.net,Winforms,Drawing,我试图在Windows窗体应用程序中画一个十字 我可以用两条线来做。我已经用一个按钮测试过了。 现在我不知道如何在打开应用程序时不按按钮自动绘制它 感谢您的帮助:D只需调用InitializeComponent()中的方法 每个表单都有自己的构造函数 您可以在项目树{formname}中看到它。Designer.cs按F7 在这里你可以看到构造器 所以就在那里调用它 private void InitializeComponent() { this.components

我试图在Windows窗体应用程序中画一个十字

我可以用两条线来做。我已经用一个按钮测试过了。 现在我不知道如何在打开应用程序时不按按钮自动绘制它


感谢您的帮助:D

只需调用InitializeComponent()中的方法

每个表单都有自己的构造函数 您可以在项目树{formname}中看到它。Designer.cs按F7

在这里你可以看到构造器

所以就在那里调用它

 private void InitializeComponent()
    {
        this.components = new System.ComponentModel.Container();
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.Text = "Form1";
    }

好的做法是重写表单
OnPaint
方法,并在那里进行所有需要的绘制(使用
Graphics
对象,从
e.Graphics
):


否则,如果您将绘制代码放在其他地方(加载、显示等)-当系统重新绘制表单时,您的绘制不会自动完成。

@EBrown这不起作用…我建议不要使用
form.Load
,因为在那里绘制的任何内容都将在以后的
Paint
事件中被覆盖。我建议添加一个
Paint
事件处理程序,并使用
PaintEventArgs
中提供的图形对象在那里绘制。请看这里的更多内容:我不认为表单在构造函数末尾一定会有一个窗口句柄,而且您需要一个窗口句柄来进行任何绘图。此外,
InitializeComponent
不是构造函数,它由设计器“拥有”,这意味着在设计器中进行更改时,对
InitializeComponent
中的代码所做的任何更改都将被覆盖。即使如此,下一次刷新表单或拖动另一个窗口时,在此完成的任何绘图都将被删除。说得好。简洁准确。
protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);

    //your paintings here
}