我将如何以不同的形式调用我的 Web 浏览器导航方法
本文关键字:我的 调用 Web 浏览器 方法 导航 | 更新日期: 2023-09-27 18:36:53
我有两种形式。我的第一个表单是我的网络浏览器,第二个是我的历史表单。我希望用户能够从我的历史表单中打开 Web 浏览器中的历史链接。我的 Web 浏览器表单有一个导航方法,我用它来打开页面。我想在我的历史记录表单中使用此方法。
这是我的代码。
Web 浏览器表单导航方法
private void navigateURL(string curURL )
{
curURL = "http://" + curURL;
// urlList.Add(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();
}
如何在 Web 浏览器类中调用导航方法
private void homeButton_Click(object sender, EventArgs e)
{
GetHomePageURL();
navigateURL(addressText);
}
那么我将如何在我的第二种形式(历史)中调用此方法?
我马上
想到的两种方法......
提出 Web 浏览器表单侦听的方法。每当用户选择要导航到的历史记录条目时,您需要声明事件并在历史记录窗体中引发它:
// In the history form, declare event + event-handler delegate // Kind of abusing events here, you'd typically have the sender // and some sort of eventargs class you'd make... public delegate void NavigationRequestedEventHandler(string address); public event NavigationRequestedEventHandler NavigationRequested; // And where you handle the user selecting an history item to navigate to // you'd raise the event with the address they want to navigate to if (NavigationRequested != null) NavigationRequested(address);
然后在 Web 浏览器表单中,您需要在创建历史记录表单时为该事件添加处理程序:
// Subscribe to event this._historyForm = new HistoryForm() this._historyForm.NavigationRequested += HistoryForm_NavigationRequested; // And in the event handler you'd call your navigate method private void HistoryForm_NavigationRequested(string address) { navigateURL(address); }
如果要创建和丢弃多个历史记录表单,请确保删除处理程序(
_historyForm.NavigationRequested -= HistoryForm_NavigationRequested
)。这是很好的做法。为历史记录表单提供对 Web 浏览器表单的引用。当您创建历史表单时,Web 浏览器表单会向其传递对自身的引用:
new HistoryForm(Me)
...理想情况下,它将采用一个定义了Navigate
方法的接口。它将保存该引用并使用它来调用 navigate。IWebBrowser WebBrowserForm; // Has the method Navigate(string address) public HistoryForm(IWebBrowser webBrowser) { this.WebBrowserForm = webBrowser; } private void homeButton_Click(object sender, EventArgs e) { GetHomePageURL(); WebBrowserForm.Navigate(address); }