在窗口窗体之间切换
本文关键字:之间 窗体 窗口 | 更新日期: 2023-09-27 18:34:09
我有一堆窗口窗体。每个表单都有用于切换表单的"后退"和"下一步"按钮。例如,单击Form3上的"返回",然后我们转到Form2。然后单击Form2上的"下一步"按钮,然后显示Form3。
现在我的问题是,如果我们从一开始就单击"下一步",它会顺利运行。但是,如果我在Form3上单击"返回",则显示Form2,然后在Form3上单击"下一步"转到Form3。代码不会转到Form3_Load事件。我的代码出了什么问题?
public partial class Form3 : Form
{
Form2 FormPrev;
Form4 FormNext;
List<DataRow> drlist = new List<DataRow>();
DataTable dt = new DataTable();
public Form3(Form2 _FormPrev)
{
InitializeComponent();
this.FormPrev = _FormPrev;
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnNext_Click(object sender, EventArgs e)
{
ShowNext();
}
private void btnBack_Click(object sender, EventArgs e)
{
ShowPrev();
}
private void ShowNext()
{
if (FormNext == null)
FormNext = new Form4(this);
FormNext.Show();
this.Hide();
}
private void ShowPrev()
{
FormPrev.Show();
this.Hide();
}
private void Form3_Load(object sender, EventArgs e)
{
// blah blah.
}
谢谢。
仅当
首次调用表单时,才会触发表单的 Load 事件。 如果随后隐藏窗体并重新显示它,则不会重新加载窗体,因此不会触发窗体的 Load 事件。
如果要在重新显示窗体时使用事件来处理,则应查看以下更合适的事件:
激活显示可见已更改
表单加载事件仅在首次显示表单之前触发。您应该使用不同的事件,例如窗体激活或 GotFocus。
这是
正常行为。荷载是为了荷载形式,不是为了展示。在您的情况下,您尝试显示隐藏的形式。如果要使用
form.Show()
比使用不
form.Hide()
但
form.Close()
上级:代码应为:
public partial class Form3 : Form
{
List<DataRow> drlist = new List<DataRow>();
DataTable dt = new DataTable();
public Form3()
{
InitializeComponent();
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnNext_Click(object sender, EventArgs e)
{
ShowNext();
}
private void btnBack_Click(object sender, EventArgs e)
{
ShowPrev();
}
private void ShowNext()
{
Form4 formNext = new Form4();
formNext.Show();
this.Close();
}
private void ShowPrev()
{
Form2 formPrev = new Form2();
formPrev.Show();
this.Close();
}
private void Form3_Load(object sender, EventArgs e)
{
// blah blah.
}
}
但是这样的组合存在一个问题 - 你不应该关闭你的主窗体。