2014-09-17 15 views
6

Pracuję z Awesomium 1.7.4.2 z C# Windows Forms w Visual Studio 2012. Nie mogę otworzyć okna przez kliknięcie hiperłącza.Awesomium Popup - ShowCreatedWebView Przykład

Mam WebControl w formie i ShowCreatedWebView am przechwytywania zdarzenia, ale w środku nie wiem, jak otworzyć nowe okno podręczne dziecko przekazujące dane do POST.

wiem, że muszę użyć ShowCreatedWebView i bezskutecznie próbował użyć próbki SDK:

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

To po prostu nie działa!

Czy ktoś może podać przykład w C# windows forms?

Czy ktoś może mi pomóc?

Odpowiedz

6

Pamiętaj, aby dodać target="_blank" w hiperłącze:

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

a następnie wszystko, co potrzebne jest, aby uchwycić ShowCreatedWebView zdarzenie tak:

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 
} 

Można otworzyć go z zewnętrznej przeglądarce, tak :

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

Możesz sobie z tym poradzić jak w 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(); 
     } 
    }