簡體   English   中英

圖片框不顯示圖像

[英]Picture Box doesn't show image

我在Vs2010中有一個表單項目。 這是我的場景:我創建了一個想要使用的窗體,如啟動畫面,沒有邊框。 里面有一個像表格一樣大的畫框。 我設置導入圖像,在設計器中我可以看到它。 但是,當我從另一個表單調用啟動畫面表單並顯示它時,我只能看到圖片框邊框,但不會加載圖像。

更新

我在BmForm_Load(其他形式)中加載splashScreen:

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

這是初始屏幕形式的圖片框的設計師代碼段:

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表單,則此后會顯示圖像!

有人知道為什么沒有顯示圖片嗎?

問題似乎是您的BmForm的准備工作已鎖定了試圖加載初始圖像以及處理命令以准備BmForm的主UI線程
為了解決這個問題,請在其自己的線程中加載啟動窗體,並在完成加載后關閉線程/窗體。

代碼示例:

在您的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。

您可以在此處閱讀有關線程的更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM