2

因此,基本上我将 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 控件运行良好,但对浏览器似乎不行。

有什么建议吗?

4

2 回答 2

3

在您的情况下,browserView是公共变量的名称,因此您可以简单地使用(this.Parent as Form1).browserView它来访问它。

于 2017-01-06T17:24:16.410 回答
1

您正在添加browserViewForm1.panel1但试图从中获取它(this.Parent as Form1)

BrowserView当您明确引用它时,您无需搜索。我建议将此引用提供给用户控件。了解托管表单内部信息的用户控制意味着信息流向错误的方向。

控件的名称由 IDE 赋予,在代码中创建控件时为空。

于 2017-01-06T17:32:44.893 回答