2017-01-03 5 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 будет компилировать (при условии, что я использовал правильный тип Cast выше, в противном случае использовать то, что необходим).

+0

'ucReport1 ucR = uc as ucReport1;' 'ParentUserControl = ucR' Этот не работает отлично для меня. –

Смежные вопросы