PictureBox可见属性不工作.请帮助

本文关键字:工作 帮助 属性 PictureBox | 更新日期: 2023-09-27 18:16:22

我正在使用窗口应用程序和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();
}

注…在图片框中,我正在展示一个gif。这样用户就会知道后台正在进行一些工作。

PictureBox可见属性不工作.请帮助

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

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

为了避免使用多线程,您所能做的就是在pictureBox1.Visible = true;之后pictureBox1.Refresh();,如下所示:

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

您的图片框将不会显示,因为在您希望显示图片框的时间内,您正在UI线程上运行其他操作。UI将不会被重新绘制(显示图片框),直到UI线程空闲-即在你的方法之后。

为了克服这个问题,你需要首先显示图片框,然后启动一个线程来运行你的操作(这将允许WinForms愉快地继续交互和绘制UI),然后回叫UI线程来隐藏图片框。

关于这个多线程执行过程的帮助,请参考这个StackOverflow问题。