0

Web ブラウザーの前後のナビゲーションの方法を作成しました。目的は、訪問したサイト (url) を 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 Browser Navigate メソッド。

 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();

    }

戻るボタンをクリックすると、現在のページがまだ表示され、エラーは発生しません。どこが間違っているのでしょうか?

テスト編集

 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);
    }
4

1 に答える 1