所以基本上我使用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控件,但不适用于浏览器。
有什么建议吗?
答案 0 :(得分:3)
在您的情况下,browserView
是公共变量的名称,因此您只需使用(this.Parent as Form1).browserView
即可访问它。
答案 1 :(得分:1)
您正在向browserView
添加Form1.panel1
,但试图从(this.Parent as Form1)
获取该BrowserView
。
当您明确引用/
时,无需搜索awk
。我建议将此引用提供给用户控件。具有托管表单内部知识的用户控件意味着信息在错误的方向上流动。
控件名称由IDE提供,在代码中创建控件时为空。