Как я могу получить доступ к элементу управления WebBrowser из UserControl? - PullRequest
1 голос
/ 23 октября 2009

У меня есть этот макет:

UserControl внутри панели. Панель находится внутри Form1.

WebBrowser находится на другой панели, которая также находится внутри Form1.

Итак:

             Form1
Panel1                  Panel2
MyUserControl           TheWebBrowser

Как я могу установить URL для моего веб-браузера в Panel2, не используя MyUserControl?

Я пробовал что-то подобное, но это не работает.

this.Parent.Parent.Controls["panel2"].Controls["webBrowser1"]

Ответы [ 2 ]

0 голосов
/ 24 октября 2009

Я мог бы отделить больше и поместить бизнес-логику в класс бизнес-уровня. Затем я создаю объект бизнес-уровня в месте, где он может кэшировать ссылки на элементы управления, необходимые для его работы, и кэшировать ссылку на объект бизнес-уровня в объектах, которые должны вызывать логику. Это было бы полезно для меня, когда мне нужно заменить элемент управления WebBrowser новым классом (например, сгенерированным из aximp). Я могу вызвать объект бизнес-логики, открыв кешированную ссылку почти так же, как в документе MFC doc / view / frame, где вы можете использовать GetDocument () -> UpdateAllViews для обновления других представлений при изменении чего-либо.

0 голосов
/ 23 октября 2009

Рассматривали ли вы создание зависимости свойства от вашего UserControl? Таким образом, ваш пользовательский элемент управления не должен знать о том, где он находится, а только о том, что он имеет ссылку на элемент управления WebBrowser.

public class UserControl: Control
{
    .
    .
    .
    public WebBrowser Browser{ get; set; }
    .
    .
    .
}

Таким образом, ваша основная форма отвечает за подключение, и вы избегаете неприятной привязки к родительской форме.

...