我正在尝试做一个逻辑门程序。我正在尝试使用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);
答案 0 :(得分: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();
}
答案 1 :(得分:1)
您必须添加pictureBox。例如,如果PictureBox位于面板中:
panel.Controls.Add();
如果它是您刚刚放置Controls.Add();
希望它有所帮助。
答案 2 :(得分:0)
您必须将PictureBox放置在表单中才能绘制它:
PictureBox px = new PictureBox();
....
px.Parent = YouFormForExample;//Component who is draw this picture box