2015-11-03 6 views
0

У меня есть встроенные элементы управления пользователя в этом проекте. Я застрял и, пытаясь получить доступ к состоянию кнопки в родительском элементе, мое возвращаемое значение не то, что я ожидаю.Ссылка на UserControl из другого UserControl

var parentControl = (OrderDetail)this.Parent.Parent; 

     // set return based on the OrderDetail control button state 
     UltraButton btn = parentControl.Controls.Find("btnReturn", true).FirstOrDefault() as UltraButton; 

Это всегда возвращает btn.Enabled = истина обратно ко мне, несмотря на то, когда форма загрузится кнопку Я здесь ссылки не включен. Есть ли жизненный цикл, о котором я просто не знаю?

Вступление в winforms для меня редко, поэтому я уверен, что я что-то упустил, просто не знаю, что это такое.

Спасибо!

+1

Недостаточно кода, который поможет вам. 'This.Parent.Parent' просит затруднения. UserControls не должен разговаривать с другими UserControls. Вероятно, было бы лучше просто установить ссылку на свойство в UserControls и иметь форму матери, которая связывает свойства вместе, если им действительно нужно поговорить друг с другом. – LarsTech

+0

Я не уверен, что 'btn.Enabled' должен быть' false', если вы не отменили его вручную. – Alexander

+0

Оказывается, что загрузка даже элементарного пользовательского элемента управления срабатывает до того, как кнопка установлена, только одна из вещей, которую вы узнаете о winforms. Я смог получить то, что я хотел, проверив состояние в событии OnVisibleChange элемента управления дочернего пользователя. Спасибо за помощь. – DogEars

ответ

0

Разместил мой код в событии OnVisibleChanged.

protected override void OnVisibleChanged(EventArgs e) 
    { 
     base.OnVisibleChanged(e); 

     if (Visible && !Disposing) 
     { 
      // set return change option based on the OrderDetail control button state 
      UltraButton btn = parentControl.Controls.Find("btnReturn", true).FirstOrDefault() as UltraButton; 

      if (btn != null && (HasPermissions && btn.Enabled)) 
       actionAllowed = true; 
     } 
    } 
Смежные вопросы