2014-09-17 8 views
6

Ich arbeite mit Awesomium 1.7.4.2 mit C# Windows Forms in Visual Studio 2012. Ich kann kein Popup-Fenster durch Klicken auf einen Hyperlink öffnen.Awesomium Popup - ShowCreatedWebView Beispiel

Ich habe eine WebControl in Form und ShowCreatedWebView bin Capture das Ereignis, aber innerhalb ich weiß nicht, wie ein neues Fenster Popup-Kind die Daten an den POST übergeben.

Ich weiß, ich ShowCreatedWebView verwenden muß und versuchte erfolglos, das SDK-Beispiel zu verwenden:

http://docs.awesomium.net/?tc=E_Awesomium_Core_IWebView_ShowCreatedWebView

Es funktioniert einfach nicht!

Kann jemand ein Beispiel in C# windows forms geben?

Kann mir jemand helfen?

Antwort

6

Denken Sie daran, target="_blank" in Ihrem Hyperlink hinzuzufügen:

<a id="foo" href="http://...." target="_blank">Test link</a> 

und dann alles, was Sie brauchen ShowCreatedWebView Ereignis zu erfassen, wie folgt aus:

webControl1.ShowCreatedWebView += OnShowNewView; 

internal static void OnShowNewView(object sender, ShowCreatedWebViewEventArgs e) 
{ 
    // Your link is in e.TargetURL 
    // You can handle it like in docs you've mentioned 
} 

Sie können es mit externem Browser öffnen, wie dies :

System.Diagnostics.Process.Start(e.TargetURL.ToString()); 

Sie können damit umgehen wie in Awesomium docs:

internal static void OnShowNewView(object sender, ShowCreatedWebViewEventArgs e) 
    { 
     WebControl webControl = sender as WebControl; 

     if (webControl == null) 
      return; 

     if (!webControl.IsLive) 
      return; 

     ChildWindow newWindow = new ChildWindow(); 

     if (e.IsPopup && !e.IsUserSpecsOnly) 
     { 
      Int32Rect screenRect = e.Specs.InitialPosition.GetInt32Rect(); 

      newWindow.NativeView = e.NewViewInstance; 
      newWindow.ShowInTaskbar = false; 
      newWindow.WindowStyle = System.Windows.WindowStyle.ToolWindow; 
      newWindow.ResizeMode = e.Specs.Resizable ? ResizeMode.CanResizeWithGrip : ResizeMode.NoResize; 

      if ((screenRect.Width > 0) && (screenRect.Height > 0)) 
      { 
       newWindow.Width = screenRect.Width; 
       newWindow.Height = screenRect.Height; 
      } 
      newWindow.Show(); 
      if ((screenRect.Y > 0) && (screenRect.X > 0)) 
      { 
       newWindow.Top = screenRect.Y; 
       newWindow.Left = screenRect.X; 
      } 
     } 
     else if (e.IsWindowOpen || e.IsPost) 
     { 
      newWindow.NativeView = e.NewViewInstance; 
      newWindow.Show(); 
     } 
     else 
     { 
      e.Cancel = true; 
      newWindow.Source = e.TargetURL; 
      newWindow.Show(); 
     } 
    }