从其他形式访问表单控件

时间:2013-07-25 18:10:47

标签: c# winforms mdiparent

我的MDIparent1

中有以下方法
public void Disablebutton()
{
    toolStripButton1.Enabled = false;
}

在我的LoginForm OKButton中单击

MDIParent1 f1 = new MDIParent1();
f1.Disablebutton();
this.Close();

LoginForm是MDIparent1的模态。

问题是Disablebutton()在LoginForm

中不起作用

3 个答案:

答案 0 :(得分:2)

您正在创建MDIParent1的新实例,而不是使用打开LoginForm的实际实例。您可以将父级传递给LoginForm构造函数。

private MDIParent1 _parentForm = null;
public LoginForm(MDIParent1 parentForm)
{
   _parentForm = parentForm;
}

//then in whichever event you're using
_parentForm.Disablebutton();
this.Close();

如果您想要显示LoginForm表单,请传递MDIParent1表单。

//assuming this is in MDIParent1.cs (otherwise pass the form instance variable)
using(LoginForm lf = new LoginForm(this))
{
   lf.Show();
}

答案 1 :(得分:1)

根据我对您的代码的理解,您正在创建一个新的MDIParent1窗口并在新创建的MDIParent1窗口上调用DisableButton。您必须在拥有LoginForm的表单上调用DisableButton(通过MdiParent属性)。

编辑:有人打败了我。

答案 2 :(得分:0)

您应该以MDIchild形式

执行此操作
  if(this.MdiParent is  LoginForm)
  {
     (this.MdiParent as LoginForm).Disablebutton();
  }