从另一个表单更改控件属性

时间:2014-10-15 16:47:43

标签: c# winforms

我尝试使用此代码以另一种形式影响所有文本框

//From form2
Principal FrmPrincipal = new Principal();
private void button1_Click(object sender, EventArgs e)
{
    foreach (var control in FrmPrincipal.Controls)
    {
        if (control is TextBox)
        {
            ((TextBox)control).Enabled = true;
            ((TextBox)control).Text = String.Empty;
        }
    }
}

但它不起作用,我还需要做些什么。感谢。

@DJ KRAZE在oppening form2之前,此代码禁用了我的Principal表单的所有文本框,并且它确实有效

    foreach(var control in this.Controls)
    {
        if (control is TextBox)
        {
            ((TextBox)control).Enabled = false;
        }
    }

1 个答案:

答案 0 :(得分:0)

您正在form2拨打Principal,并且只需点按Disable即可TextBoxes Principal form2 Principalform2

要执行此操作,您必须将Constructor引用传递给form2中的Principal

示例(从Form2 form2 = new Form2(this); //passing "Principal" form reference to "form2" form2.Show(); 表单中调用form2):

Principal FrmPrincipal;             //new object
Form2(Principal principalRef)       //"form2" constructor
{
    FrmPrincipal = principalRef;    //assignment of "Principal" form reference to the new object
}

您需要在FrmPrincipal中进行的更改:

form2

现在,您只需在{{1}}中的任意位置拨打{{1}},即可进行任何更改。