在我的项目中,有两种形式frmLoginfrmMain。从frmLogin成功登录后,我通过执行以下操作向用户显示frmMain表单:

frmLogin形式的button_click事件中:

frmMain main = new frmMain();
main.Show();
this.Hide();


frmMain中,当用户注销时,我想显示相同的frmLogin形式(而不是实例)。这该怎么做?

我尝试了以下代码:(创建了我不想的frmLogin的另一个实例)

frmMain形式的button_click事件中:

if (MessageBox.Show("Do you really want to log out?", "Alert", MessageBoxButtons.YesNo).Equals(DialogResult.Yes))
{
    this.FormClosing -= frmMain_FormClosing;
    //
    Process p = new Process();
    p.StartInfo.FileName = Application.ExecutablePath;
    p.Start();
    //
    this.Dispose();
}


我也尝试使用internal说明符,但没有用。

编辑:作为一名实习生,我不允许使用Static关键字和更改program.cs。如果上述方法要求使用受限方法(我已经提到过),那么请建议我使用另一种方法。

最佳答案

您要做的就是将登录页面分配为owner of nextform to be opened

在您要打开nextForm的登录页面调用以下函数中

void openNextForm()
{
    Form f2 = new YourForm();
    f2.owner=this;
    f2.Show();
    this.Hide();
}


在您的nextForm(例如mainForm)中,在您单击按钮之后单击

void ButtonLogOut_Click(object sender, EventArgs e)
{
     this.Owner.Show();
     this.Hide();
     this.Dispose();
}

关于c# - 显示以前隐藏的相同表格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13226393/

10-13 06:22