我正在使用窗口应用程序和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 ..所以用户会知道后台正在进行一些工作.. 该功能需要很长时间才能完成......
答案 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。