2017-01-03 185 views
0

我有一個用戶控制在我加入其他用戶的控制,我加入像下面的子用戶控件的用戶控件的屬性,無法訪問

ucSubMenu menu = new ucSubMenu(this); 
    pnBox.Controls.Add(menu); 

在孩子的用戶控件我有屬性過程將初始化父級用戶控件。所以,在孩子的用戶控件的構造函數我正在爲低於母用戶控制對象,

private UserControl parentUserControl; 

    public UserControl ParentUserControl 
    { 
     get { return parentUserControl; } 
     set { parentUserControl = value; } 
    } 
public ucSubMenu(UserControl uc) 
    { 
     InitializeComponent(); 
     switch (Sys.ToString(uc.GetType())) 
     { 
      case "ucReport1": 
       ParentUserControl = uc as ucReport1; 

       MessageBox.Show(Sys.ToString(parentUserControl.GetType())); 


       ReportClass rc = parentUserControl.reportBindingSource.Current as ReportClass; 
       //menuBindingSource.DataSource = rc.ItemList; 
       break; 
     } 
    } 

我無法訪問父用戶控件的公共屬性在構造函數中, ReportClass rc = parentUserControl.reportBindingSource.Current as ReportClass; //menuBindingSource.DataSource = rc.ItemList;

如何我可以從子用戶控件訪問父級用戶控件的屬性嗎?

回答

0

目的parentUserControl聲明與類型UserControl,所以在編譯時只類的屬性是已知的。要使用在運行時發生的「實際」控件的屬性,你需要做類型轉換,就像這樣:

ucReport1 reportCtl = (ucReport1)parentUserControl; 

然後reportCtl.reportBindingSource將編譯(假設我用上面抹上正確的類型,否則用什麼是需要的)。

+0

'ucReport1 UCR = UC爲ucReport1;''ParentUserControl = ucR'這一個不工作對我罰款。 –