C# Доступ к dotnetBrowser из 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, но не для браузера.

Любой совет?

2 ответа

Решение

В твоем случае, browserView это имя публичной переменной, так что вы можете просто использовать(this.Parent as Form1).browserView чтобы получить к нему доступ.

Вы добавляете browserView в Form1.panel1, но пытается получить его от (this.Parent as Form1),

Вам не нужно искать BrowserView когда у вас есть явная ссылка на него. Я предлагаю дать эту ссылку на пользовательский элемент управления. Пользовательский контроль со знанием внутренней части формы хостинга означает, что информация движется в неправильном направлении.

Имена элементов управления присваиваются им в IDE и пусты при создании элементов управления в коде.

Другие вопросы по тегам