2014-01-15 86 views
0

我想在啓動或禁用文本框時加載我的WinForm。但是,文本框位於用戶控件中。在窗體中啓用用戶控件中的文本框

我可以製作啓用/禁用這些文本框的方法嗎?

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

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

,並將它們從我的形式:

EnableTextbox(///Name of textbox) 

還是我必須給它們命名方法裏面?

+1

形式不應該很瞭解的用戶控件的內部運作,所以它應該只是'公共無效EnableTextbox()'和方法中,只需設置TextBox控件爲false。 – LarsTech

+0

確實。它應該是一個類型爲* bool *的屬性,其名稱類似於「PasswordEntryEnabled」,無論它的功能如何。你創建一個類來封裝*行爲。 –

回答

0

您可以嘗試使用FindControl方法您的用戶控件中,像這樣:

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

您可以從根形式稱之爲這一點,它會在自身和孩子接觸的每個控件。所有你需要做的就是完成確定一個文本框是否被禁用的邏輯。我建議在構造函數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); 
      } 
     } 
    } 
相關問題