所以本质上我正在使用 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
来访问它。
关于C# 从 UserControl 访问 dotnetBrowser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41496884/