我已经为我的网页浏览器写了一个向前和向后导航的方法。其目的是将被隐藏的网站(网址)存储到名为webHistory的列表中。然后我尝试通过这个字符串来循环我的后退和前进导航。但它似乎并不奏效。我已检查并确认列表正在填充。这是我的代码。网络浏览器返回功能不起作用
我的Web浏览器类
public partial class WebBrowser : Form
{
public string url;
public string addressText;
private homeForm homeForm;
private List <string> urlList = new List <string>();
List<String> webHistory;
int webHistory_Index;
bool checkHistory;
public WebBrowser()
{
InitializeComponent();
webHistory = new List<String>();
webHistory_Index = 0;
checkHistory = false;
}
后退按钮一个我测试目前
private void backButton_Click(object sender, EventArgs e)
{
String backPage = webHistory.ElementAt(webHistory.Count-1);
webNavigate(backPage);
}
按钮导航方法
private void updateNavigation()
{
if (webHistory_Index == 0)
{
this.backButton.Enabled = false;
}
else
{
this.backButton.Enabled = true;
}
if (webHistory_Index < webHistory.Count)
{
this.forwardButton.Enabled = true;
}
else
{
this.forwardButton.Enabled = false;
}
}
private void navigatedPages(string urlbartext)
{
addressText = urlBar.Text;
urlbartext = "http://" + addressText;
webHistory.Add(urlbartext);
if (!checkHistory)
{
if (webHistory_Index < webHistory.Count)
{
webHistory.RemoveRange(webHistory_Index, webHistory.Count - webHistory_Index);
}
System.Diagnostics.Debug.Print(urlbartext + " - " + urlBar.SelectedText);
webHistory_Index += 1;
updateNavigation();
}
checkHistory = false;
System.Console.WriteLine(webHistory.Count.ToString());
}
Web浏览器导航方法。
private void webNavigate(string urlbartext)
{
addressText = urlBar.Text;
urlbartext = "http://" + addressText;
urlList.Add(urlbartext);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlbartext);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream pageStream = response.GetResponseStream();
StreamReader reader = new StreamReader(pageStream, Encoding.Default);
string s = reader.ReadToEnd();
webDisplay.Text = s;
reader.Dispose();
pageStream.Dispose();
response.Close();
}
当我点击后退按钮,当前页面仍然显示,没有错误given.Where我会出错吗?
测试编辑
List<String> webHistory;
int curIndex = -1;
public Form1()
{
InitializeComponent();
webHistory = new List<string>();
}
private void gotoUrl(string curUrl)
{
curUrl = "http://" + curUrl;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(curUrl);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream pageStream = response.GetResponseStream();
StreamReader reader = new StreamReader(pageStream, Encoding.Default);
string s = reader.ReadToEnd();
webDisplay.Text = s;
reader.Dispose();
pageStream.Dispose();
response.Close();
}
private void addUrl(string curUrl)
{
if (webHistory.Count > 0 && webHistory.Count - 1 > curIndex) webHistory.RemoveRange(curIndex, webHistory.Count - curIndex - 1);
webHistory.Add(curUrl);
curIndex = webHistory.Count - 1;
gotoUrl(curUrl);
}
private void back_Click(object sender, EventArgs e)
{
if (curIndex - 1 >= 0)
{
curIndex = curIndex - 1;
gotoUrl(webHistory[curIndex]);
}
}
private void forward_Click(object sender, EventArgs e)
{
if (curIndex + 1 <= webHistory.Count - 1)
{
curIndex = curIndex + 1;
gotoUrl(webHistory[curIndex]);
}
}
private void navigate_Click(object sender, EventArgs e)
{
addUrl(urlText.Text);
}
首先(只是为了确定):你不能依赖内置的WebBrowser,不是吗?第二件事:用WebHistory你只想存储最后访问过的页面并通过点击后退/前进按钮来检索它们?因为你似乎太复杂了。 – varocarbas
@varocarbas是的我不应该使用webBrowser类。是的,这正是我想用webHistory做的事情。 – b0w3rb0w3r
你有一些帮助。 – varocarbas