我正在使用窗口应用程序和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 ..因此用户将知道某些工作正在后台进行..该功能需要很长时间才能完成...
假设保存到数据库需要一些时间,您应该使用BackgroundWorker
异步执行,一旦操作完成就隐藏PictureBox。
当前未显示图像的原因是因为在长时间运行的保存操作发生时,Windows消息未被处理,因此您的表单将无法响应用户输入而不执行重新绘制。保存操作完成后,消息开始再次处理,图片框已再次隐藏。
为了避免使用多线程,你可以做的就是在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;
}
您的图片框将不会显示,因为您希望在显示图片框期间在UI线程上运行其他操作。在UI线程变为空闲之前(即在您的方法之后),UI不会被重新绘制(显示图片框)。
要解决这个问题,你需要首先显示图片框,然后触发一个线程来运行你的操作(这将允许WinForms愉快地继续交互和绘制UI),然后完成回调到UI线程隐藏图片框。
有关此多线程执行过程的帮助,请参阅此StackOverflow Question。