2017-01-12 13 views
0

私は基本的にC#を学び、シンプルなWebブラウザを作り、開いたサイトをナビゲートするための「戻る」と「進む」ボタンを追加しました。まあ、事は、私が戻って取得するサイトがない場合、それらを無効にする方法を把握することはできません。戻ってくるウェブサイトがないと「戻るボタン」を無効にする

コンストラクタのコードは一度だけ呼び出されます

 if (webBrowser1.CanGoBack == false) 
     { 
      backButton.Enabled = false; 
     } 
     else 
     { 
      backButton.Enabled = true; 
     } 
+0

を自分のコードを置きます。 Webブラウザコントロールでナビゲーションイベントが実行されるたびに、このチェックを実行するといいでしょうか? – David

答えて

0

...私は自分のフォームのコンストラクタに、この単純なコードを入れてみましたが、それはいずれかが影響を与えていないように思えます。したがって、コード内にコードを配置すると、コード内でコードを複数回呼び出すことができます。可能であれば、あなたのフォームコントロール上にあるイベントやカスタムボタンで発砲する可能性があります。

0

あなたのコードを見ると、フォームが初期化されるのではなく、ブラウザがナビゲートするたびにコードを実行する必要があると言います。また、MSDNの記事でこれを設定するより良い方法が示され、 cangoback方法について。

0

したがって、プログラムは何をすべきかだけでなく、いつ行うべきかを伝える必要があります。コンストラクタにEnable/Disableロジックを置くことは、 "フォームがロードされるときにこれをチェックし、それを有効/無効にする"と言っています。

しかし、コンストラクタを渡すと、有効/無効の状態を変更するときは何も通知されません。

は、プログラムが「ねえ、私はこれらのボタンの有効状態を更新する必要がある」助けのため

0

おかげで多くのことを知っているようにEvent Handlersを使用してみてください! が、これは*フォームの*コンストラクタになった場合、フォームが作成されたとき、一度だけ実行するために起こっている...仕事をしたイベントに

private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e) 
    { 
     progressBar1.Value = 0; 
     comboBox1.Text = webBrowser1.Url.ToString(); 

     if (webBrowser1.CanGoBack == false) 
     { 
      backButton.Enabled = false; 
     } 
     else 
     { 
      backButton.Enabled = true; 
     } 


     if (webBrowser1.CanGoForward == false) 
     { 
      forwardButton.Enabled = false; 
     } 
     else 
     { 
      forwardButton.Enabled = true; 
     } 

    } 
関連する問題