图片框不会显示为 C#

本文关键字:显示 | 更新日期: 2023-09-27 18:36:31

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

图片框不会显示为 C#

您需要通过将图片框添加到窗体控件集合来将图片框与窗体相关联。 调用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();      
}

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

panel.Controls.Add();

如果是你刚放Controls.Add();的形式

希望对您有所帮助。

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

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