2016-04-26 40 views
2

私はWinforms、C#、geckofx-45 Windows 32bit 45.0.10でNuget(https://www.nuget.org/packages/Geckofx45/)を使用しています。ブラウザ機能を3つのボタンに接続しようとしています。以下:GeckoFx 45 Navigate/GoBack/Reloadメソッドが動作しない

  • browser.Navigate( "www.bing.com");
  • browser.GoBack();
  • browser.Reload();

私はVisual Studio 2015でこれを実行していますが、私のブレークポイントはボタンに問題がないことを示しています。これらのメソッドのそれぞれに対してコードが呼び出され、ブラウザに変更が反映されません。

明確にするには:私はコントロールを追加し、Form_Loadイベントバインドされたメソッドで作成しました。そのメソッドでは、browser.Navigate、browser.Reload、およびbrowser.GoBackメソッドはプログラムで動作します。しかし、私はそれらの方法がその外のどこでも働くようにすることはできません。

アイデア?たぶん私はちょうど間違って何かをやっている?

ありがとうございました!

Form1_Loadメソッドのコード

 private void Form1_Load(object sender, EventArgs e) 
    { 
     //Configure Browser 
     browser = new GeckoWebBrowser(); 

     GeckoPreferences.User["places.history.enabled"] = false; 
     GeckoPreferences.User["security.warn_viewing_mixed"] = false; 
     GeckoPreferences.User["plugin.state.flash"] = 0; 
     GeckoPreferences.User["browser.cache.disk.enable"] = false; 
     GeckoPreferences.User["browser.cache.memory.enable"] = false; 
     GeckoPreferences.User["browser.xul.error_pages.enabled"] = false; 
     GeckoPreferences.User["dom.max_script_run_time"] = 0; //let js run as long as it needs to; prevents timeout errors 
     GeckoPreferences.User["browser.download.manager.showAlertOnComplete"] = false; 
     GeckoPreferences.User["privacy.popups.showBrowserMessage"] = false; 
     browser.AllowDrop = false; 

     this.Controls.Add(browser); 
     browser.Dock = DockStyle.None; 
     browser.Size = new System.Drawing.Size(1024, 700); 
     browser.Margin = new System.Windows.Forms.Padding(0); 
     browser.MinimumSize = new System.Drawing.Size(20, 20); 
     int leftOffset = (this.ClientSize.Width - browser.Width)/2; 
     browser.Location = new System.Drawing.Point(leftOffset,2); 

     //Hooking browser events 
     browser.ShowContextMenu += new EventHandler<GeckoContextMenuEventArgs>(browser_ShowContextMenu); //Strip out undesirable options from the right click menu. 
     browser.CreateWindow += new EventHandler<GeckoCreateWindowEventArgs>(browser_CreateWindow); //Prevent the browser from opening popup windows in new windows/links in new windows. 
     browser.NSSError += new EventHandler<GeckoNSSErrorEventArgs>(browser_NSSError); //Bypass SSL certificate issues 
     browser.NavigationError += new EventHandler<GeckoNavigationErrorEventArgs>(browser_NavigationError); //If there are any issues encountered during page loads 
     browser.Navigated += new EventHandler<GeckoNavigatedEventArgs>(browser_Navigated); //React appropriately to URL navigation 

     //Navigate the browser as desired. 
     browser.Navigate(defaultHomeWebsite); 
    } 

発射されるフォームのボタンが、ブラウザの方法は

/// <summary> 
    /// Browser Button: Go Home 
    /// </summary> 
    /// <param name="sender"></param> 
    /// <param name="e"></param> 
    private void button4_Click(object sender, EventArgs e) 
    { 
     browser.Navigate("www.bing.com"); 
    } 

    /// <summary> 
    /// Browser Button: Go Back 
    /// </summary> 
    /// <param name="sender"></param> 
    /// <param name="e"></param> 
    private void button3_Click(object sender, EventArgs e) 
    { 
     browser.GoBack(); 
    } 

    /// <summary> 
    /// Browser Button: Refresh Page 
    /// </summary> 
    /// <param name="sender"></param> 
    /// <param name="e"></param> 
    private void button2_Click(object sender, EventArgs e) 
    { 
     browser.Reload(); 
    } 
+1

明らかに間違っているものはありません。チェックしようとするもの:1. Form_Loadは1つだけ呼び出されます。 2.ブラウザ=新しいGeckoWebBrowser()とthis.Controls.Add(ブラウザ)をコンストラクタに移動します。 3.ローカルのhtmlファイルまたはabout:configにナビゲートしてみてください(ネットワーキングの問題を排除するため) – Tom

答えて

1

を動作しないコメント@Tomは、チェックアウトすることを私によい手がかりを与えました。

これはGeckoFxの問題ではありません。私は最初、ブラウザの初期化と設定コードをForm1()コンストラクタに移動してこの問題を解決しました。これはうまくいきました。私は数時間「なぜ」それが働いたとして私の頭を傷つけてきました。私が誤って私のForm_Loadメソッドを二重バインドしていたことが判明したため、実行時に "ブラウザ"の2つのインスタンスが作成されていました。

解決方法は、Form_Loadのイベントバインディングの1つを削除することでした。

関連する問題