Skip to content

Commit 409c8a8

Browse files
committed
WinForms - Add ChromiumWebBrowser.FromBrowser static method
- Can be used to get ChromiumWebBrowser instance from IBrowser instance - Added generic base implementation to reduce code duplication
1 parent e8bd3cc commit 409c8a8

File tree

3 files changed

+37
-15
lines changed

3 files changed

+37
-15
lines changed

CefSharp.WinForms/ChromiumWebBrowser.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -789,5 +789,16 @@ public IBrowser GetBrowser()
789789

790790
return browser;
791791
}
792+
793+
/// <summary>
794+
/// Gets the <see cref="ChromiumWebBrowser"/> associated with
795+
/// a specific <see cref="IBrowser"/> instance.
796+
/// </summary>
797+
/// <param name="browser">browser</param>
798+
/// <returns>returns the assocaited <see cref="ChromiumWebBrowser"/> or null if Disposed or no host found.</returns>
799+
public static ChromiumWebBrowser FromBrowser(IBrowser browser)
800+
{
801+
return FromBrowser<ChromiumWebBrowser>(browser);
802+
}
792803
}
793804
}

CefSharp.WinForms/Host/ChromiumHostControl.cs

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -298,21 +298,7 @@ protected override void Dispose(bool disposing)
298298
/// <returns>returns the assocaited <see cref="ChromiumHostControl"/> or null if Disposed or no host found.</returns>
299299
public static ChromiumHostControl FromBrowser(IBrowser browser)
300300
{
301-
if (browser.IsDisposed)
302-
{
303-
return null;
304-
}
305-
306-
var windowHandle = browser.GetHost().GetWindowHandle();
307-
308-
if (windowHandle == IntPtr.Zero)
309-
{
310-
return null;
311-
}
312-
313-
var control = Control.FromChildHandle(windowHandle) as ChromiumHostControl;
314-
315-
return control;
301+
return FromBrowser<ChromiumHostControl>(browser);
316302
}
317303
}
318304
}

CefSharp.WinForms/Host/ChromiumHostControlBase.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,5 +181,30 @@ internal void RaiseIsBrowserInitializedChangedEvent()
181181
{
182182
IsBrowserInitializedChanged?.Invoke(this, EventArgs.Empty);
183183
}
184+
185+
/// <summary>
186+
/// Gets the <see cref="ChromiumHostControl"/> or <see cref="ChromiumWebBrowser"/> associated with
187+
/// a specific <see cref="IBrowser"/> instance.
188+
/// </summary>
189+
/// <param name="browser">browser</param>
190+
/// <returns>returns the assocaited <see cref="ChromiumHostControl"/> or <see cref="ChromiumWebBrowser"/> or null if Disposed or no host found.</returns>
191+
internal static T FromBrowser<T>(IBrowser browser) where T : ChromiumHostControlBase
192+
{
193+
if (browser.IsDisposed)
194+
{
195+
return null;
196+
}
197+
198+
var windowHandle = browser.GetHost().GetWindowHandle();
199+
200+
if (windowHandle == IntPtr.Zero)
201+
{
202+
return null;
203+
}
204+
205+
var control = Control.FromChildHandle(windowHandle) as T;
206+
207+
return control;
208+
}
184209
}
185210
}

0 commit comments

Comments
 (0)