在执行过程运行时加载gif图像

时间:2014-04-09 04:51:21

标签: c#

我正在使用窗口应用程序和C#..我有一张在应用程序开始时看不见的图片..当点击某个按钮时,必须显示图片框..

我使用此编码,但图片框不可见

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

    }

1 个答案:

答案 0 :(得分:2)

不要使用Sleep - 阻止线程,这意味着不会处理任何Windows消息,并且您的表单不会重新绘制。

相反,您可以使用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事件中隐藏图像。