我的应用程序有一个列表框和一个图片框。我需要的是当触发ListBox.IndexChanged事件时,PictureBox图像需要更新或刷新。
编辑:我第一次从列表中选择某些内容时,图像会加载,但是当我选择其他项目时,图像不会更新。
我试过两个都没有运气:
PictureBox1.Refresh();
PictureBox1.Update();
在后台,当ListBox1的索引被更改时,我有一个脚本正在运行以转到特定的网页并根据ListBox中选择的项目截取屏幕截图并替换当前的imageBox图像。我在想,也许我只是没有时间去拍照,所以我也尝试了这个,但没有运气:
System.Threading.Thread.Sleep(3000);
这是应用程序的样子:
以下是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();
答案 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();
}