从表单中启用usercontrol中的文本框

时间:2014-01-15 19:46:44

标签: c# winforms user-controls

我想在加载winform时启用或禁用文本框。但是,文本框位于用户控件中。

我可以制作启用/禁用这些文本框的方法吗?

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

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

他们来自我的表格:

EnableTextbox(///Name of textbox)

或者我必须在方法中命名它们吗?

2 个答案:

答案 0 :(得分:0)

您可以尝试在UserControl中使用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

答案 1 :(得分: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);
            }
        }
    }