如何从UserControl中访问WebBrowser控件?

时间:2009-10-23 01:35:38

标签: c# .net winforms webbrowser-control panel

我有这个布局:

Panel中的UserControl。 Panel位于Form1中。

WebBrowser也位于Form1内的另一个面板中。

所以:

             Form1
Panel1                  Panel2
MyUserControl           TheWebBrowser

如何使用MyUserControl在Panel2中设置我的webbrowser的URL?

我尝试过类似的东西,但效果不好。

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

2 个答案:

答案 0 :(得分:0)

您是否考虑过在UserControl上创建属性依赖项?这样,您的用户控件就不必知道它所在的位置,只需要知道它对WebBrowser控件的引用。

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

这样你的主窗体负责进行连接,并避免与父窗体的讨厌耦合。

答案 1 :(得分:0)

我可以解耦更多,并将业务逻辑放在业务层类中。然后,我在一个可以缓存对操作所需控件的引用的位置创建业务层对象,并在需要调用逻辑的对象中缓存业务层对象的引用。当我需要用新类(例如从aximp生成的类)替换WebBrowser控件时,这将使我受益。我可以通过访问缓存的引用调用业务逻辑对象,就像MFC的doc / view / frame一样,你可以使用GetDocument() - > UpdateAllViews在更改内容时更新其他视图。