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。这样用户就会知道后台正在进行一些工作。
假设保存到数据库需要一些时间,您应该使用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问题。