2014-04-09 34 views
0

我使用窗口的应用程序和C#..我有一个图象是在该应用..开始无形被点击一些按钮时,画面框必须被显示。 。加载GIF图像可见的,而在执行进程运行

我用这个编码,但图片框是不可见的

private void btnsearch_Click(object sender, EventArgs e) 
     { 
      if (cmbproject.Text == "---Select---") 
      { 
       MessageBox.Show("Please Select Project Name"); 
       return;    
      } 
      else 
      { 
       pictureBox1.Visible = true; 
       pictureBox1.BringToFront(); 
       pictureBox1.Show(); 

       FillReport(); 
       Thread.Sleep(5000); 
       pictureBox1.Visible = false; 
     } 

    } 
+0

这个代码不工作,gif图片亘古不变的获得显示在所有....请帮我找到答案 – user3471683

+0

你永远需要'BringToFront'或'Show'上的控件。确保控制器在设计器中可见(并且没有任何东西在其上)。那么这应该工作。 – PMF

+0

在后面有一个gridview这就是我把前面的picturebox的原因我尝试了所有的可能性,但图像没有显示出来..而在执行 – user3471683

回答

2

不要使用Sleep - 阻止线程,这意味着没有窗户的消息得到处理,你的表格将不会重新绘制。

相反,你可以使用一个Timer 5秒后隐藏图像。

计时器添加到您的表单,并改变你的代码是这样的:

pictureBox1.Visible = true;  
FillReport(); 
timer1.Interval = 5000; 
timer1.Start(); 

而在计时器事件:

private void Timer1_Tick(object sender, EventArgs e) { 
    pictureBox1.Visible = false; 
    timer1.Stop(); 
} 

现在你的形象应该是5秒可见。

但形式仍然不会同时FillReport正在执行重绘。如果你需要的图像在这一点上是可见的,我建议使用BackgroundWorker执行FillReport,使其不会阻塞UI线程。然后,您可以在RunWorkerCompleted事件中隐藏图像。

+0

)后面添加这一行,告诉我如何处理加载图像,以便在Fillreport()函数获取时显示图像执行.... – user3471683

+0

请解释一下我的backgroundwoker执行,以便它不列入阻塞线程? – user3471683

+0

不 - 尝试自己弄清楚,如果不能,请提出一个新问题。 – Blorgbeard

相关问题