0

我正在尝试做一个逻辑门程序。我正在尝试PictureBox使用 NOT 类创建一个,问题是当我在 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);

4

3 回答 3

2

您需要通过将图片框添加到表单控件集合来将其与表单相关联。调用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();      
}
于 2012-06-08T15:16:38.570 回答
1

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

panel.Controls.Add();

如果它是你刚刚输入的形式Controls.Add();

希望能帮助到你。

于 2012-06-08T15:20:22.967 回答
0

您必须将 PictureBox 放置到窗体中才能绘制它:

PictureBox px = new PictureBox();
....
px.Parent = YouFormForExample;//Component who is draw this picture box
于 2012-06-08T15:19:17.270 回答