私は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. Form_Loadは1つだけ呼び出されます。 2.ブラウザ=新しいGeckoWebBrowser()とthis.Controls.Add(ブラウザ)をコンストラクタに移動します。 3.ローカルのhtmlファイルまたはabout:configにナビゲートしてみてください(ネットワーキングの問題を排除するため) – Tom