2017-01-03 133 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'这一个不工作对我罚款。 –