我有这个布局:
Panel中的UserControl。 Panel位于Form1中。
WebBrowser也位于Form1内的另一个面板中。
所以:
Form1
Panel1 Panel2
MyUserControl TheWebBrowser
如何使用MyUserControl在Panel2中设置我的webbrowser的URL?
我尝试过类似的东西,但效果不好。
this.Parent.Parent.Controls["panel2"].Controls["webBrowser1"]
答案 0 :(得分:0)
您是否考虑过在UserControl上创建属性依赖项?这样,您的用户控件就不必知道它所在的位置,只需要知道它对WebBrowser控件的引用。
public class UserControl: Control
{
.
.
.
public WebBrowser Browser{ get; set; }
.
.
.
}
这样你的主窗体负责进行连接,并避免与父窗体的讨厌耦合。
答案 1 :(得分:0)
我可以解耦更多,并将业务逻辑放在业务层类中。然后,我在一个可以缓存对操作所需控件的引用的位置创建业务层对象,并在需要调用逻辑的对象中缓存业务层对象的引用。当我需要用新类(例如从aximp生成的类)替换WebBrowser控件时,这将使我受益。我可以通过访问缓存的引用调用业务逻辑对象,就像MFC的doc / view / frame一样,你可以使用GetDocument() - > UpdateAllViews在更改内容时更新其他视图。