在子窗口中绘图-C#

在子窗口中绘图-C#,c#,C#,我的问题是如何在C#中的子窗口中绘制一条简单的线,即: 我有一个带有按钮的父窗口。单击按钮,将显示一个子窗口,并在其上绘制一条线 那么,我该怎么做呢?这是我的子窗口代码: public partial class Form2 : Form { Pen pen; public Form2() { InitializeComponent(); pen = new Pen(Color.Black); } private v

我的问题是如何在C#中的子窗口中绘制一条简单的线,即:

  • 我有一个带有按钮的父窗口。单击按钮,将显示一个子窗口,并在其上绘制一条线
那么,我该怎么做呢?这是我的子窗口代码:

public partial class Form2 : Form
{
    Pen pen;
    public Form2()
    {
        InitializeComponent();
        pen = new Pen(Color.Black);
    }


    private void Form2_Paint(object sender, PaintEventArgs e)
    {
        Graphics g;
        g = this.CreateGraphics();
        e.Graphics.DrawLine(pen, 10, 10, 100, 100);
    }

}

谢谢。

以下代码更好:

private void Form2_Paint(object sender, PaintEventArgs e)
{
    Graphics g = e.Graphics;
    using (Pen p = new Pen(Color.Black))
    {
        g.DrawLine(pen, 10, 10, 100, 100);
    }
}
使用paint事件中的图形实例,并使用语法来自动处理笔对象

记住在父窗口中调用Show方法,如下所示:

private void button_Click(object sender, EventArgs e)
{
    Form form2 = new Form2();
    form2.ShowDialog();
}

到底什么东西不适合你?子窗口不显示,线条不显示,等等。@Adrian Faciu子窗口显示,但线条未绘制。上面的代码应按原样工作。请发布处理按钮的部分,单击并显示Form2。@Adrian Falciu这是代码:命名空间测试{public partial class Form1:Form{Form f2;public Form1(){InitializeComponent();}私有void按钮1_click(对象发送方,事件参数e){f2=新表单();f2.ShowDialog();}}@EB您是否手工编写Form2_Paint方法?您可能无法通过GUI设计器在设计器文件中注册事件。您不是手工编写的。我以通常的方式注册了该事件。@EB如何尝试在父窗口中绘制线条,因此确保
绘制线条
按您的要求进行操作。我想我找到了一个解决方案:我创建“新笔”在父窗口(Form1)和图形中。在子窗口类(Form2)中,我声明了一个笔和图形变量,我添加了一个构造函数,并从父窗口传递了变量笔和图形。它可以工作。很抱歉,我无法编辑整个代码,因为我的声誉(:-))太低了。感谢大家。我忘了在子窗口类中写下,我添加了如下表单加载:private void Form2\u Load(object sender,EventArgs e){this.Paint+=new System.Windows.Forms.PaintEventHandler(this.Form2\u Paint);}