我正在创建一个目前有3种形式的应用
我想要做的是在关闭你的第二个儿童表格时找出重新加载第一个儿童表格。这将导致显示在其中的记录被刷新,从而显示刚刚使用第二个子表单创建的新条目。
请指导我如何实现这一目标。
以下是我用来处理隐藏事件的代码。
在login event = true
上的主窗体中cpanel child = new cpanel(); //create new isntance of form, cpanel is the 1st child form
child.FormClosed += new FormClosedEventHandler(child_FormClosed); //add handler to catch when child form is closed
child.Show(); //show child
this.Hide(); //hide parent
void child_FormClosed(object sender, FormClosedEventArgs e)
{
//when child form is closed, the parent reappears
MessageBox.Show("You have been logged out.");
Application.Exit();
}
在第二个孩子形式我有这样的东西
private void button3_Click(object sender, EventArgs e)
{
this.Close();
}
答案 0 :(得分:1)
让您的ChildForm1
成为主要形式:
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
using(var loginForm = new LoginForm())
if (loginForm.ShowDialog() != DialogResult.OK)
return;
Application.Run(new ChildForm1());
从ChildFrom2
表单中显示ChildForm1
:
Hide(); // you really don't need to hide main form
using(var childForm2 = new ChildForm2())
{
if (childForm2.ShowDialog() == DialogResult.OK)
{
// update ChildForm1 with data from ChildForm2
}
}
Show();
答案 1 :(得分:0)
您可以使用此功能:
在结束前的第二个孩子表格中:
childForm1.refresh()
以第一个孩子形式:
public static void refresh() //You can use it with parameters too
{
//do something
}
答案 2 :(得分:0)
好的我再一次解决了这个问题,并且正在发布解决方案,希望有朝一日可以帮助有类似问题的人。
实际的解决方案非常简单,这是需要完成的工作。
在子表单中添加此行,在第二个表单的受保护部分中的某个位置,而不是在方法内部,以便始终存在。
cpanel child = new cpanel();
第二个表格的关闭按钮方法中的需要是这样的。
private void button3_Click(object sender, EventArgs e)
{
child.Show();
this.Hide(); //hide parent
}
这将使您在更新内容后单击第二个表格的关闭按钮时获得更新的第一个表格。