图片框不显示图像

Posted

技术标签:

【中文标题】图片框不显示图像【英文标题】:Picture Box doesn't show image 【发布时间】:2014-12-17 21:18:48 【问题描述】:

我在 Vs2010 中有一个表单项目。 这是我的场景: 我创建了一个我想像闪屏一样使用的表单,没有边框。在里面我有一个像表格一样大的图片框。 我设置了导入它的图像,在设计器中我可以看到它。 但是当我从另一个表单调用闪屏表单并显示它时,我只能看到图片框边框,但不会加载图像。

更新

我在 BmForm_Load(其他表单)中加载 splashScreen:

SplashScreen ss = new SplashScreen();
ss.TopMost = true;
ss.Show();
//Prepare bmForm....
ss.Close();

这是初始屏幕形式的图片框的设计器代码sn-p:

this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
this.pictureBox1.ImageLocation = "";
this.pictureBox1.InitialImage = null;
this.pictureBox1.Location = new System.Drawing.Point(0, 0);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(256, 256);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false;
this.pictureBox1.WaitOnLoad = true;

更新 2

如果我在其他表单加载结束之前没有关闭splashScreen表单,则在此之后显示图像!

问题

有人知道为什么图片没有显示吗?

【问题讨论】:

你是把图片作为资源导入到项目中还是直接链接到图片文件? @BerndLinde 我已将图像作为资源导入,但如果我直接链接图像文件,同样的问题仍然存在(我尝试使用多个图像) 你能显示你用来显示另一个表单的代码和pictureBox的设计器代码sn-p吗? @BerndLinde 我更新了问题!谢谢! 【参考方案1】:

问题似乎是 BmForm 的 准备 锁定了 主 UI 线程,该线程试图加载启动图像并处理准备 BmForm 的命令。 为了解决这个问题,请在自己的线程中加载启动表单,并在加载完成后关闭线程/表单。

代码示例:

在您的 BmForm_Load 中

Thread splashThread = new Thread(ShowSplash);
splashThread.Start();

// Initialize bmForm

splashThread.Abort();
// This is just to ensure that the form gets its focus back, can be left out.
bmForm.Focus();

启动画面的显示方法

private void ShowSplash()

  SplashScreen splashScreen = null;
  try
  
    splashScreen = new SplashScreen();
    splashScreen.TopMost = true;
    // Use ShowDialog() here because the form doesn't show when using Show()
    splashScreen.ShowDialog();
  
  catch (ThreadAbortException)
  
    if (splashScreen != null)
    
      splashScreen.Close();
    
  

您可能需要将using System.Threading; 添加到您的类中,并向 BmForm_Load 事件添加一些额外的错误处理,以防发生错误,以便您可以清理 splashThread。

你可以阅读更多关于线程here

【讨论】:

以上是关于图片框不显示图像的主要内容,如果未能解决你的问题,请参考以下文章

arcgis出图的外框不显示

您好,“messagebox.show弹出框不显示”这个问题您解决了吗?

消息框不显示

为啥列表框不使用 Visual C++ 6 显示元素?

为啥这个组合框不显示项目?

右边框不显示