2014-01-15 4 views
0

Я хочу включить или отключить текстовые поля при загрузке на мою winform. Однако текстовые поля находятся в пользовательском контроле.Включить текстовое поле в usercontrol из формы

Могу ли я создавать методы для включения/выключения этих текстовых полей?

public void EnableTextbox(TextBox tb) 
    { 
     tb.Enabled = true; 
    } 

public void DisableTextbox(TextBox tb) 
    { 
     tb.Enabled = false; 
    } 

и их от моей формы:

EnableTextbox(///Name of textbox) 

Или я должен назвать их внутри метода?

+1

Форма не должна знать, что много о внутренней работе UserControl, так что это должно быть просто 'общественного недействительным EnableTextbox()' и внутри методы, просто установить контроль над TextBox к ложному. – LarsTech

+0

Действительно. И это должно быть свойство типа * bool * с таким именем, как «PasswordEntryEnabled», независимо от того, что он выполняет. Вы создаете класс для * инкапсуляции * поведения. –

ответ

0

Вы можете попробовать использовать метод FindControl внутри UserControl, как это:

UserControl myControl = new UserControl();//You must not create a new instace, you need to poitn at yours. 
     TextBox referencedTextBox = (TextBox)myControl.FindControl("myTextBoxId"); 
     //referencedTextBox.WhateverYouWant 
0

Вы можете назвать это от корневой формы, и он будет доступ ко всем контроль внутри себя и своих детей. Все, что вам нужно сделать, это завершить логику, чтобы определить, должен ли TextBox быть отключен или нет. Я рекомендую называть это в конструкторе после InitializeComponent().

private void ProcessControl(Control cntrl) 
    { 
     if (cntrl == null) 
     { 
      return; 
     } 
     else if (cntrl is TextBox) 
     { 
      if (true) //condition to determine if the textbox is enabled 
      { 
       cntrl.Enabled = true; 
      } 
      else 
      { 
       cntrl.Enabled = false; 
      } 
     } 
     else if (cntrl.HasChildren) 
     { 
      foreach (Control item in cntrl.Controls) 
      { 
       ProcessControl(item); 
      } 
     } 
    } 
Смежные вопросы