PictureBox可见属性不起作用...请帮助

时间:2011-12-02 12:56:20

标签: c# picturebox

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

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

private void save_click(object sender, EventArgs e)

{

      pictureBox1.Visible = true;
      pictureBox1.Show();

      //does the work here 
      //storing and retreiving values from datadase

     pictureBox1.Visible = false;
     pictureBox1.Hide();
}

P.S ...在图片框中我显示了一个gif ..所以用户会知道后台正在进行一些工作.. 该功能需要很长时间才能完成......

3 个答案:

答案 0 :(得分:5)

假设保存到数据库需要一些时间,您应该使用BackgroundWorker异步执行,一旦操作完成就隐藏PictureBox。

当前未显示图像的原因是因为在长时间运行的保存操作发生时,Windows消息未被处理,因此您的表单将无法响应用户输入而不执行重新绘制。保存操作完成后,消息开始再次处理,图片框已再次隐藏。

答案 1 :(得分:3)

为避免使用多线程,您可以在pictureBox1.Refresh();之后pictureBox1.Visible = true;完成所有操作,如下所示:

private void save_click(object sender, EventArgs e)
{
    pictureBox1.Visible = true;
    pictureBox1.Refresh();

    //does the work here 
    //storing and retreiving values from datadase

        pictureBox1.Visible = false;
}

答案 2 :(得分:1)

由于您希望在显示图片框期间在UI线程上运行其他操作,因此不会显示您的图片框。在UI线程变为空闲之前(即在您的方法之后),UI不会被重新绘制(显示图片框)。

要解决这个问题,你需要首先显示图片框,然后触发一个线程来运行你的操作(这将允许WinForms愉快地继续交互和绘制UI),然后通过回调UI完成线程隐藏图片框。

有关此多线程执行过程的帮助,请参阅此StackOverflow Question