C# 从 UserControl 访问 dotnetBrowser
C# Accessing dotnetBrowser from a UserControl
所以基本上我将 dotNetBrowser 用于我正在加载到主窗体面板中的项目,并且我在用户控件中有一个用于用户输入的按钮,因此它可以与浏览器交互。这是我拥有的:
public partial class Form1 : Form
{
public BrowserView browserView = new WinFormsBrowserView();
public Form1()
{
InitializeComponent();
this.panel1.Controls.Add((Control)browserView);
browserView.Browser.LoadURL("URL TO BE LOADED");
browserView.Browser.FinishLoadingFrameEvent += delegate (object sender, FinishLoadingEventArgs e)
{
if (e.IsMainFrame)
{
// Do stuff when loaded
} else return;
}
};
}
}
效果很好,在我的 usercontrol.cs 我有:
public void button1_Click(object sender, EventArgs e)
{
BrowserView br = (this.Parent as Form1).Controls["browserView"] as BrowserView;
br.Browser.LoadURL("NEW URL");
}
以便在单击按钮时可以加载新的 url。但这是抛出一个空异常。
基本上我需要这两个组件来相互传递信息。我使用的方法适用于其他 Form1 控件,但似乎不适用于浏览器。
有什么建议吗?
在您的例子中,browserView
是 public 变量的名称,因此您只需使用 (this.Parent as Form1).browserView
即可访问它。
您正在将 browserView
添加到 Form1.panel1
,但试图从 (this.Parent as Form1)
获取它。
当您明确引用 BrowserView
时,您无需搜索它。我建议将此引用提供给用户控件。了解宿主表单内部结构的用户控件意味着信息流向错误的方向。
控件的名称由 IDE 指定,在代码中创建控件时为空。
所以基本上我将 dotNetBrowser 用于我正在加载到主窗体面板中的项目,并且我在用户控件中有一个用于用户输入的按钮,因此它可以与浏览器交互。这是我拥有的:
public partial class Form1 : Form
{
public BrowserView browserView = new WinFormsBrowserView();
public Form1()
{
InitializeComponent();
this.panel1.Controls.Add((Control)browserView);
browserView.Browser.LoadURL("URL TO BE LOADED");
browserView.Browser.FinishLoadingFrameEvent += delegate (object sender, FinishLoadingEventArgs e)
{
if (e.IsMainFrame)
{
// Do stuff when loaded
} else return;
}
};
}
}
效果很好,在我的 usercontrol.cs 我有:
public void button1_Click(object sender, EventArgs e)
{
BrowserView br = (this.Parent as Form1).Controls["browserView"] as BrowserView;
br.Browser.LoadURL("NEW URL");
}
以便在单击按钮时可以加载新的 url。但这是抛出一个空异常。
基本上我需要这两个组件来相互传递信息。我使用的方法适用于其他 Form1 控件,但似乎不适用于浏览器。
有什么建议吗?
在您的例子中,browserView
是 public 变量的名称,因此您只需使用 (this.Parent as Form1).browserView
即可访问它。
您正在将 browserView
添加到 Form1.panel1
,但试图从 (this.Parent as Form1)
获取它。
当您明确引用 BrowserView
时,您无需搜索它。我建议将此引用提供给用户控件。了解宿主表单内部结构的用户控件意味着信息流向错误的方向。
控件的名称由 IDE 指定,在代码中创建控件时为空。