2017-02-18 173 views
-2

我试图在运行时加载一个pictureBox。没有运行时错误。但PictureBox不显示。动态创建的PictureBox不显示在C#

后来我还添加了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

尝试添加picLoadingNew.Refresh();和this.Refresh();按钮单击方法的结束。或者你可以尝试picLoadingNew.Update();.如果这些不起作用,请检查您试图在图片框中显示的图片。 –

+1

设置大小和位置,但然后使用DockStyle.Fill不是很明智。它至少会被button1重叠,也许更多。如果添加picLoadingNew.BringToFront(),您会看到一些可能性。做得更好,将其添加到设计器中,并将其Visible属性设置为False。所以你所要做的就是将它设置为* true *。 –

回答

0

您的代码应该工作,但有一个小问题。如果您的图片正好位于其他图片的相同位置,并且其大小相同,则无法看到它。它位于屏幕上当前图像的后面。

取下显示和可视电话,但电话添加到BringToFront

this.Controls.Add(picLoadingNew); 
// picLoadingNew.Show(); 
// picLoadingNew.Visible = true; 
picLoadingNew.BringToFront(); 

顺便说一句,是什么让一个特定的大小,你的新形象点,如果你可以要求它以填充可用空间在它的容器上?

+0

关注评论downvote?我真的很想知道答案中是否有问题。 – Steve

+0

是的,它帮助了我。Upvoted :) – Santosh

+0

很高兴能有所帮助。虽然你不是新用户,但你似乎并不是很活跃,所以我想推荐阅读[接受答案的工作原理](http://meta.stackexchange.com/questions/5234 /如何接受答案 - 工作),然后决定哪些应该被接受的答案(如果有的话) – Steve

0

您不需要.Show或.Visible行,因为这将是默认情况,但您确实需要this.Controls.Add(picLoadingNew) - 只要表单将是父级而不是面板或其他任何东西。如果PictureBox坐在另一个控制面板的顶部,实际上需要:panel.Controls.Add(picLoadingNew) - 而不是当前的this.Controls.Add(picLoadingNew)一行。

我会先试,因为我看不到什么太错了你的代码,改变你的图片框的默认位置:

picLoadingNew.Location =新System.Drawing.Point(5, 5);

并删除.Dock行。

这可能是将PictureBox设置为关闭屏幕(取决于表单的大小?) - 您没有提供这个,所以猜测可能是错误的。如果PictureBox不在屏幕上,新的坐标将强制它被置于左上角 - 所以你应该一定看到它。一旦你知道它正在工作,然后你可以将它移动到位并在你证明代码实际工作后设置锚点。

您可能会发现设置.SizeMode = StretchImage可能是有用的,因为你的图像太大,又是“屏幕外”。 StretchImage会强制图像调整大小,以便与您提供的当前.Size尺寸很好地匹配您的PictureBox。

喜欢的东西:上面

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); 

的代码为我工作(用我自己的球场的图像!)。

希望有所帮助。