【发布时间】:2016-12-23 18:22:36
【问题描述】:
希望大家能帮帮我。
我有一个用 C# 编写的应用程序,它使用 WebBrowser 控件来编辑 HTML 文件(在屏幕截图上标记为 2),下面是初始化它的代码:
htmlEditor.DocumentText = "";
doc = htmlEditor.Document.DomDocument as IHTMLDocument2;
doc.designMode = "On";
htmlEditor.Url = new Uri(Properties.Main.Default.tempDir + "\\section-1.html");
我还有一个 listview 控件,它显示 HTML 文件的列表(在屏幕截图上标记为 1)。每次用户单击列表项时,都会触发一个事件,并且 webbrowser 控件会加载不同的 HTML 文件,代码如下:
private void sectionsTree_SelectedNodeChanged(object sender, RadTreeViewEventArgs e)
{
Sections.fileCheck();
if (sectionsTree.SelectedNode != null)
{
emDataSet.dtSectionsDataTable sectionsDT = new emDataSet.dtSectionsDataTable();
sectionsDT.ReadXml(Properties.Main.Default.tempDir + "\\sections.xml");
for (int i = 0; i < sectionsDT.Rows.Count; i++)
{
if (sectionsTree.SelectedNode.Text == sectionsDT.Rows[i][2].ToString())
{
htmlEditor.Url = new Uri(Properties.Main.Default.tempDir + "\\" + sectionsDT.Rows[i][1].ToString());
}
}
}
}
现在我的问题来了:因为在 webbrowser 控件中加载的 HTML 页面是可编辑的,所以每次我在列表中选择一个新项目时(在加载新的 HTML 文件之前)都会出现一个保存对话框(标记为 3 on截图)。我有自己的代码来保存更改的 HTML 文件,由“更改”事件触发,如果有某种解决方案可以绕过、抑制、跳过或只是隐藏此保存对话框,那就太好了,所以用户赢了每次他想转到另一个文件时都不需要单击它。这是变化中的事件:
private void sectionsTree_SelectedNodeChanging(object sender, RadTreeViewCancelEventArgs e)
{
Sections.fileCheck();
if (sectionsTree.SelectedNode != null)
{
emDataSet.dtSectionsDataTable sectionsDT = new emDataSet.dtSectionsDataTable();
sectionsDT.ReadXml(Properties.Main.Default.tempDir + "\\sections.xml");
for (int i = 0; i < sectionsDT.Rows.Count; i++)
{
if (sectionsTree.SelectedNode.Text == sectionsDT.Rows[i][2].ToString())
{
File.WriteAllText(Properties.Main.Default.tempDir + "\\" + sectionsDT.Rows[i][1].ToString(), htmlEditor.DocumentText);
}
}
}
}
我的意见是上面的代码是可以的,和我的问题无关,因为,我的理解是问题出在WebBrowser控件的一个内置功能上,但是,也许,它可能是在检查文件是否已更改之前拦截 WebBrowser 控件并保存它的解决方案,因此当它被检查时它不会触发“保存”对话框,但我还没有弄清楚如何做到这一点。
我期待您的所有答案,请随时提出任何问题。
谢谢, 艾美特
【问题讨论】:
标签: c# html webbrowser-control