2016-08-24 27 views
-2

我想知道是否有可能的解决方案(我希望存在)解决我的问题。我有两种形式,登录表单和主表单。我想知道是否有一种方法可以禁用关闭主窗体并仅在退出时允许关闭(将用户重定向到登录窗体),并且只有在登录窗体处于活动状态时才允许关闭。对不起,我的英语不好。禁用某个WinForm的关闭

我尝试使用下面的事件,是的,它阻止我关闭主窗体,但是当我注销它时,它对我登录窗体也做了同样的事情,我不想发生这种情况。有没有办法做到这一点?

private void Form1_Closing(object sender, CancelEventArgs e) 
{ 
    e.Cancel = true; 
} 
+0

你可以把一个地方的标志指示用户是否已注销。当用户退出时将标志设置为“true”。然后在'Form1_Closing'事件'e.Cancel = flag;'中。 –

+0

对不起,但这个“标志”对我来说是新的(初学者级别)。我很想听听你能否向我解释我怎样才能将这些应用到我的表格中。先生先谢谢你。 –

+1

在'Program.cs'和'e.Cancel = Program.SignedOut;''Program'类中可以是'public static bool SignedOut;'' –

回答

1

我假设你正在使用LoginForm的像对话框(的ShowDialog),使用DialogResult.Ok只有当用户登录成功

.... 

private voif logoutButton_click(object sender, EventArgs e) 
{ 
    _logged = false; 
} 

..... 

private void loginButton_click(object sender, EventArgs e) 
{ 
    LoginForm _loginForm = new LoginForm(); 
    if(_loginForm.ShowDialog() == DialogResult.Ok) 
    { 
     _logged = true; 
    } 
} 

...... 

private void Form1_Closing(object sender, CancelEventArgs e) 
{ 
    if(!_logged) 
     e.Cancel = true; 
} 
+0

不是真的,但我也会尝试这个。谢谢你的答案先生。 –