2009-10-23 64 views
1

我有這樣的佈局:如何從UserControl內部訪問WebBrowser控件?

面板內的用戶控件。面板在Form1中。

WebBrowser在另一個面板也在Form1中。

所以:

   Form1 
Panel1     Panel2 
MyUserControl   TheWebBrowser 

我如何可以將其網址爲我是Panel2的瀏覽器,從withing的MyUserControl?

我試過類似這樣的東西,但效果不好。

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

回答

0

您是否考慮過在您的UserControl上創建屬性依賴關係?這樣,您的用戶控件就不必知道它的位置,只要它具有對WebBrowser控件的引用即可。

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

這樣你的主窗體負責做連接,並且避免了與父窗體的討厭耦合。

0

我可以解耦更多並將業務邏輯放在業務層級中。然後,我創建業務層對象,以便它可以緩存需要操作的控件的引用,並將業務層對象的引用緩存到需要調用邏輯的對象中。當我需要用新類(例如從aximp生成的類)替換WebBrowser控件時,這會對我有利。我可以通過訪問緩存引用來調用業務邏輯對象,非常類似於MFC的doc/view/frame,您可以使用GetDocument() - > UpdateAllViews在更改某些內容時更新其他視圖。