PictureBox图像不会更新/刷新

时间:2014-06-25 16:02:06

标签: c# winforms

我的应用程序有一个列表框和一个图片框。我需要的是当触发ListBox.IndexChanged事件时,PictureBox图像需要更新或刷新。

编辑:我第一次从列表中选择某些内容时,图像会加载,但是当我选择其他项目时,图像不会更新。

我试过两个都没有运气:

PictureBox1.Refresh();
PictureBox1.Update();

在后台,当ListBox1的索引被更改时,我有一个脚本正在运行以转到特定的网页并根据ListBox中选择的项目截取屏幕截图并替换当前的imageBox图像。我在想,也许我只是没有时间去拍照,所以我也尝试了这个,但没有运气:

System.Threading.Thread.Sleep(3000);

这是应用程序的样子:

enter image description here

以下是ListBox1.IndexChanged事件的内容:

Process myProcess;
myProcess = Process.Start("C:/users/bnickerson/desktop/script/RegScript.cmd");
System.Threading.Thread.Sleep(5000);
myProcess.Close();
string imgLoc = "C:/users/bnickerson/Desktop/script/result/last.png";
pictureBox1.Image = Image.FromFile(imgLoc);
pictureBox1.Update();

1 个答案:

答案 0 :(得分:2)

正如汉斯指出的那样,图像文件被锁定,直到返回的Image - 对象为Disposed。试试这个:

using (Process ExternalProcess = new Process())
{
   ExternalProcess.StartInfo.FileName = @"C:\users\bnickerson\desktop\script\RegScript.cmd";
   ExternalProcess.Start();
   ExternalProcess.WaitForExit();
}

string imgLoc = @"C:\users\bnickerson\Desktop\script\result\last.png";
if (pictureBox1.Image != null) { pictureBox1.Image.Dispose(); }
using (Image myImage = Image.FromFile(imgLoc))
{
   pictureBox1.Image = (Image)myImage.Clone();
   pictureBox1.Update();
}