我试图在运行时加载pictureBox。没有运行时错误。但是PictureBox没有显示出来。
后来我也添加了InitializeComponent(),但它没有帮助。
我的代码:
private void button1_Click(object sender, EventArgs e)
{
PictureBox picLoadingNew = new PictureBox();
picLoadingNew.BackColor = System.Drawing.Color.Transparent;
picLoadingNew.Image = global::QuiDip.Properties.Resources.ajax_loader_Long;
picLoadingNew.Location = new System.Drawing.Point(790, 760);
picLoadingNew.Name = "picLoadingNew";
picLoadingNew.Size = new System.Drawing.Size(142, 22);
picLoadingNew.Dock = DockStyle.Fill;
//InitializeComponent();
this.Controls.Add(picLoadingNew);
picLoadingNew.Show();
picLoadingNew.Visible = true;
}
答案 0 :(得分:0)
您的代码应该可以运行但是有一点问题。如果您的图像与另一个图像的位置完全相同且大小相同,则无法看到它。它位于屏幕上当前图像的后面。
删除显示和可见调用,但添加对BringToFront的调用
this.Controls.Add(picLoadingNew);
// picLoadingNew.Show();
// picLoadingNew.Visible = true;
picLoadingNew.BringToFront();
顺便说一句,如果您要求它填充其容器上的可用空间,那么为新图像指定特定尺寸的重点是什么?
答案 1 :(得分:0)
你不需要。显示或。可见行,因为这将是默认值,但你确实需要this.Controls.Add(picLoadingNew) - 只要表单将成为父而不是Panel或其他任何东西。如果PictureBox位于另一个控件(如面板)的顶部,则实际需要:panel.Controls.Add(picLoadingNew) - 而不是当前的this.Controls.Add(picLoadingNew)行。
我首先尝试的是因为我看不到您的代码有任何错误,将图片框的默认位置更改为:
picLoadingNew.Location = new System.Drawing.Point(5,5);
删除.Dock行。
这可能是将PictureBox设置为关闭屏幕(取决于表单的大小?) - 你没有提供这个,所以猜测可能出错。如果PictureBox在屏幕外,新坐标将强制它在左上角 - 所以你肯定应该看到它。一旦你知道它正在工作,你可以将它移动到位并在你证明代码实际工作后设置锚点。
您可能会发现设置.SizeMode = StretchImage可能很有用,因为您的图像太大而且再次“屏幕外”。 StretchImage将强制图像调整大小以适应您在PictureBox中使用您提供的当前.Size维度。
类似的东西:
PictureBox picLoadingNew = new PictureBox();
picLoadingNew.BackColor = System.Drawing.Color.Transparent;
picLoadingNew.Image = global::QuiDip.Properties.Resources.ajax_loader_Long;
picLoadingNew.Location = new System.Drawing.Point(5, 5);
picLoadingNew.Size = new System.Drawing.Size(142, 50);
picLoadingNew.SizeMode = PictureBoxSizeMode.StretchImage;
parent.Controls.Add(picLoadingNew);
上面的代码对我有用(当然使用我自己的图像!)。
希望有所帮助。