我将如何以不同的形式调用我的 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 浏览器导航方法

我马上

想到的两种方法......

  1. 提出 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)。这是很好的做法。

  2. 为历史记录表单提供对 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);
    }