WebBrowser.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using System.Reflection;
  2. namespace System.Windows.Forms
  3. {
  4. public class WebBrowser : Control
  5. {
  6. private System.Windows.Controls.ContentControl contentControl { get; }
  7. protected new System.Windows.Controls.WebBrowser control { get; }
  8. public Uri Url
  9. {
  10. get => control.Source;
  11. set => control.Source = value;
  12. }
  13. public string DocumentText
  14. {
  15. get
  16. {
  17. dynamic doc = control.Document;
  18. return doc.documentElement.innerHtml.ToString();
  19. }
  20. }
  21. public bool ScriptErrorsSuppressed { get; set; }
  22. public event WebBrowserNavigatedEventHandler Navigated;
  23. protected virtual void OnNavigated(WebBrowserNavigatedEventArgs e)
  24. {
  25. dynamic activeX = control.GetType().InvokeMember("ActiveXInstance",
  26. BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.NonPublic,
  27. null, control, new object[] { });
  28. activeX.Silent = ScriptErrorsSuppressed;
  29. Navigated?.Invoke(this, e);
  30. }
  31. public void Navigate(string url) => control.Navigate(url);
  32. public WebBrowser()
  33. {
  34. contentControl = new();
  35. control = new();
  36. contentControl.Content = control;
  37. SetControl(contentControl);
  38. control.Navigated += (sender, e) => OnNavigated(new WebBrowserNavigatedEventArgs(e.Uri));
  39. }
  40. }
  41. }