-2

更新

MDI父母表格:

public void sample()
{
textBox1.Text = "Sample";
}

private void button1_Click(object sender, EventArgs e)
{
MDIParent1 p = new MDIParent1();
LogInForm LogIn = new LogInForm(p); 
DialogResult res = LogIn.ShowDialog()
}

登录表格:

private MDIParent1 _p;
public LogInForm(MDIParent1 p)
{
InitializeComponent();
_p = p;
}

private void button1_Click(object sender, EventArgs e)
{
_p.sample();
this.Close();
}

_p.sample(); 不工作

4

3 回答 3

3

改变

p = _p; 

_p = p;

就这些...

于 2013-07-27T16:51:41.050 回答
1
public void sample()
{
   textBox1.Text = "Sample";
}

private void button1_Click(object sender, EventArgs e)
{
   MDIParent1 p = new MDIParent1();
   LogInForm LogIn = new LogInForm(p); 
   DialogResult res = LogIn.ShowDialog()
}

在按钮单击此处,您正在创建一个NEW MDIParent1并将其传递给新的 LogInFOrm

private MDIParent1 _p;
public LogInForm(MDIParent1 p)
{
   InitializeComponent();
   _p = p;
}

private void button1_Click(object sender, EventArgs e)
{
   _p.sample();
}

在这里,您在传入的表单上调用该sample方法(已在前一个表单上实例化,但从未实际呈现)。要呈现它,您需要调用Show()ShowDialog()

如果您打算传递单击按钮的表单,您可以这样做

LogInForm LogIn = new LogInForm(this);

或者你可以使用Application.OpenForms并且根本没有通过表格。

于 2013-07-27T17:22:18.383 回答
0

您需要更换:

p = _p;

在:

_p = p;

这可能有效

于 2013-07-27T16:53:05.820 回答