C#从UserControl访问dotnetBrowser

时间:2017-01-06 00:07:10

标签: c# dotnetbrowser

所以基本上我使用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控件,但不适用于浏览器。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

在您的情况下,browserView是公共变量的名称,因此您只需使用(this.Parent as Form1).browserView即可访问它。

答案 1 :(得分:1)

您正在向browserView添加Form1.panel1,但试图从(this.Parent as Form1)获取该BrowserView

当您明确引用/时,无需搜索awk。我建议将此引用提供给用户控件。具有托管表单内部知识的用户控件意味着信息在错误的方向上流动。

控件名称由IDE提供,在代码中创建控件时为空。