我正在 Visual Studio 中制作一个简单的浏览器。
为了能够保存和删除书签,我使用了这些代码:
当打开 frmFavorites 时,它会读取一个名为 Favorites.xml 的 xml 文件
private void frmFavorites_Load(object sender, EventArgs e) {
System.Xml.XmlDocument loadDoc = new System.Xml.XmlDocument();
loadDoc.Load(Application.StartupPath + "\\Favorites.xml");
foreach (System.Xml.XmlNode favNode in loadDoc.SelectNodes("/Favorites/Item")) {
listViewFavs.Items.Add(favNode.Attributes["url"].InnerText);
}
}
当表单再次关闭时,它将覆盖 xml 文件并将所有剩余项目保存在 xml 文件中
private void frmFavorites_FormClosing(object sender, FormClosingEventArgs e) {
System.Xml.XmlTextWriter writer = new System.Xml.XmlTextWriter(Application.StartupPath + "\\Favorites.xml", null);
writer.WriteStartElement("Favorites");
for (int i = 0 ; i < listViewFavs.Items.Count ; i++) {
writer.WriteStartElement("Item");
writer.WriteAttributeString("url", listViewFavs.Items[i].Text);
writer.WriteEndElement();
}
writer.WriteEndElement();
writer.Close();
}
要添加和删除书签,我正在使用以下代码:
private void btnAddFav_Click(object sender, EventArgs e) {
ListViewItem item = new ListViewItem(txtURL.Text);
listViewFavs.Items.Add(txtURL.Text);
}
private void btnDelFav_Click(object sender, EventArgs e) {
try {
listViewFavs.Items.RemoveAt(listViewFavs.SelectedIndices[0]);
}
catch {
MessageBox.Show("Je moet een item selecteren", "Geen item geselecteerd", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
现在,我的问题是:
我想让我的用户能够双击一个项目,这样他们就可以导航到他们保存的收藏夹。至少,这是应该发生的。
到目前为止,我已经尝试了一些代码并最终得到了这个:
private void listViewFavs_DoubleClick(object sender, EventArgs e) {
try {
FrmMain Main = new FrmMain();
Main.navigate(listViewFavs.SelectedItems[0].Text);
}
catch {
MessageBox.Show("Je moet een item selecteren", "Geen item geselecteerd", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
frmMain 是我的浏览器,并且 navigate 是我用来检查 URL 和导航的公共方法。
要导航,我使用以下代码:
public void navigate(String URL) {
if (String.IsNullOrEmpty(URL) || URL.Equals("about:blank")) {
GetActiveBrowser().DocumentText = Properties.Resources.FirstTime; // this is a HTML-doc you also see when you open the browser for the 1st time
txtURL.Text = "about:blank";
return;
} else if (!URL.StartsWith("http://") && !URL.StartsWith("https://") && !URL.StartsWith("file://") && !URL.StartsWith("ftp://"))
URL = "http://" + URL;
try {
GetActiveTab().Text = "... Loading ...";
this.Icon = Properties.Resources.loading1;
GetActiveBrowser().Navigate(new Uri(URL));
}
catch (System.UriFormatException) {
MessageBox.Show("'" + URL + "' is geen geldige URL", "Ongeldige URL", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
} // go to URL
如您所见,我使用了 GetActiveTab() 和 GetActiveBrowser:
private WebBrowser GetActiveBrowser() {
return (WebBrowser)tabs.SelectedTab.Controls[0];
}
private TabPage GetActiveTab() {
return tabs.SelectedTab;
}
实际发生的情况:
我双击该项目
没有任何反应 -.- 没有导航,没有错误,没有任何反应
有没有人有解决这个问题的想法?
我感谢提供的任何帮助。