案例:
我正在创建一个Windows窗体应用程序,但我在Web浏览器上显示图像时遇到问题。大约10%的图像不会出现,并且会出现" X"(未加载),我很确定它是由documentCompleted代码引起的。我没有使用这种方法尝试了200张图像,但它们都显示出来了,并且代码中不会显示大约30张。
程序:
我填充字符串数组" allFiles"我使用folderBrowserDialog选择了所有图像路径。 代码:
browseButton.Click += (sender, args) =>
{
//Creating and opening FolderBrowserDialog.
using (var fbd = new FolderBrowserDialog())
{
fbd.RootFolder = Environment.SpecialFolder.Desktop;
DialogResult result = fbd.ShowDialog();
//Check if chosen directory is valid.
if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(fbd.SelectedPath))
{
index = 0;
lblPath.Text = "Path: " + fbd.SelectedPath.ToString();
//Create array for all items in selected directories.
allFiles = Directory.GetFiles(fbd.SelectedPath, "*.*", System.IO.SearchOption.AllDirectories);
changeImage(false, false, false, false, false, false);
createLogFile();
}
}
};
要遍历所有图像并在webbrowser中显示它们,请使用以下代码:
BrowseRightButton.Click += (sender, args) =>
{
changeImage(false, true, false, false, false, false);
};
此按钮在单击时调用方法changeImage(更新全局变量索引),请参阅下面的changeImage代码:
private void changeImage(bool left, bool right, bool left10, bool right10, bool leftEnd, bool rightEnd)
{
if (right == true)
{
index += 1;
fileName = allFiles[index];
webBrowser1.Navigate(fileName);
updateLabel();
}
else if (left == true)
{
index -= 1;
fileName = allFiles[index];
webBrowser1.Navigate(fileName);
updateLabel();
}
else if (left10 == true)
{
index -= 10;
fileName = allFiles[index];
webBrowser1.Navigate(fileName);
updateLabel();
}
else if (right10 == true)
{
index += 10;
fileName = allFiles[index];
webBrowser1.Navigate(fileName);
updateLabel();
}
else if (leftEnd == true)
{
index = 0;
fileName = allFiles[index];
webBrowser1.Navigate(fileName);
updateLabel();
}
else if (rightEnd == true)
{
index = allFiles.Length - 1;
fileName = allFiles[index];
webBrowser1.Navigate(fileName);
updateLabel();
}
else if (left == false && right == false && left10 == false && right10 == false && leftEnd == false && rightEnd == false)
{
fileName = allFiles[0];
webBrowser1.Navigate(fileName);
}
}
此方法缩放图像,使其适合webBrowser:
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (allFiles[index].EndsWith("JPG") || allFiles[index].EndsWith("PNG") || allFiles[index].EndsWith("jpg") || allFiles[index].EndsWith("png"))
{
webBrowser1.Document.Body.SetAttribute("scroll", "no");
var img = webBrowser1.Document.GetElementsByTagName("img")
.Cast<HtmlElement>().FirstOrDefault();
var w = img.ClientRectangle.Width;
var h = img.ClientRectangle.Height;
img.Style = string.Format("{0}: 100%", w > h ? "Width" : "Height");
}
}
我得到&#34; X&#34;:
的图像OneDrive链接包含60张图片和一个GIF(位于OneDrive文件夹的末尾),我测试并失败:https://1drv.ms/f/s!AtHq6La_gCehhBvv9d-TLA3wNOYG