PictureBox赢得';t出现C#

PictureBox赢得';t出现C#,c#,forms,picturebox,C#,Forms,Picturebox,我正在尝试做一个逻辑门程序。我试图创建一个PictureBox,但类不存在,问题是当我在form1中调用create方法时,它不会出现,当我单击列表项时,PictureBox也不会出现。问题是(我认为)即使我使用FindForm()方法,它也不知道它在form1中。 从表单中调用它 ---Source Code for NoT class--- class NOT: Shape { PictureBox px = new PictureBox(); Image img

我正在尝试做一个逻辑门程序。我试图创建一个
PictureBox
,但类不存在,问题是当我在form1中调用create方法时,它不会出现,当我单击列表项时,
PictureBox
也不会出现。问题是(我认为)即使我使用
FindForm()
方法,它也不知道它在form1中。 从表单中调用它

---Source Code for NoT class---

class NOT: Shape
{
    PictureBox px = new PictureBox();    
    Image img = Image.FromFile(@"C:\NOT.png");
    public NOT(int x, int y) : base(x,y)
    {
        px.FindForm();
        px.Visible = true;
        px.Enabled = true;

    }

    public override void CreatePicture()
    {
        Point p1 = new Point(xx, yy);
        px.Image = img;
        px.Location = p1;

        px.Show();      
    }
}


---Source code for the SHape Class---
abstract class Shape
{
    protected int xx, yy;    //private Point location;

    public Shape(int X, int Y)
    {
        xx = X;
        yy = Y;
    }

    public abstract void CreatePicture();
}
private void nOTToolStripMenuItem_Click(object sender, EventArgs e)
    {
        nt.CreatePicture();


    }
NOT nt = new NOT(12,23);


您需要通过将图片框添加到表单控件集合来将其与表单关联。调用
FindForm()
只返回当前分配的表单;在您的情况下,它将返回
null

public override void CreatePicture(Form form)
{
    Point p1 = new Point(xx, yy);
    px.Image = img;
    px.Location = p1;

    form.Controls.Add(px);

    px.Show();      
}

您需要通过将图片框添加到表单控件集合,将其与表单关联。调用
FindForm()
只返回当前分配的表单;在您的情况下,它将返回
null

public override void CreatePicture(Form form)
{
    Point p1 = new Point(xx, yy);
    px.Image = img;
    px.Location = p1;

    form.Controls.Add(px);

    px.Show();      
}

必须将PictureBox放置到表单中才能绘制它:

PictureBox px = new PictureBox();
....
px.Parent = YouFormForExample;//Component who is draw this picture box

必须将PictureBox放置到表单中才能绘制它:

PictureBox px = new PictureBox();
....
px.Parent = YouFormForExample;//Component who is draw this picture box

您必须添加图片框。例如,如果PictureBox位于面板中:

panel.Controls.Add();
如果它的格式是您刚才放置的
Controls.Add()


希望有帮助。

您必须添加图片盒。例如,如果PictureBox位于面板中:

panel.Controls.Add();
如果它的格式是您刚才放置的
Controls.Add()


希望有帮助。

但你永远不会告诉图片框它应该放在表单中!因此,它存在于空间中(或程序内存中,但没有人绘制它)……但你永远不会告诉图片框它应该存在于表单中!因此,它存在于空间中(或程序内存中,但没有人绘制它)。。