c# - 注销主窗体并显示登录窗体

标签 c# winforms authentication logout

我知道这个问题可能听起来很愚蠢,但令人遗憾的是,我已经在网上搜索了解决方案,但仍然无法解决。我现在的问题是=注销按钮退出主窗体,然后再次显示登录窗体。 单击注销按钮后,下面的代码将不会显示登录表单,它会立即退出整个应用程序。

void logoutbtn_Click(object sender, EventArgs e)
    {
        CloseSockets(); 
        this.Close();
        serverlogin login = new serverlogin();
        login.Show();   
    }

因此,我尝试替换 this.Hide() 而不是 this.Close();。但是,甚至发生了一些愚蠢的事情。是的,在我单击注销按钮后显示登录页面,但是当我单击登录表单中的取消按钮时,它并没有退出整个应用程序,它应该退出整个应用程序。我猜是因为主要形式只是隐藏而尚未关闭???另外,当我再次尝试登录时,登录按钮也不起作用,无法登录主页。

我对我的解释表示歉意,如果不清楚,请告诉我。 请帮助我。非常感谢。

最佳答案

您需要在您的表单中定义 2 个事件,这些事件将在单击按钮时触发并在主表单中处理它:

主窗体.cs

void logoutbtn_Click(object sender, EventArgs e)
{
    CloseSockets();
    this.Hide();
    serverlogin login = new serverlogin();

    login.Login += new EventHandler(serverlogin_Login);
    login.Cancel += new EventHandler(serverlogin_Cancel);

    login.Show();
}

private void serverlogin_Login(object sender, EventArgs args)
{
    this.Show();
    // do login
}

private void serverlogin_Cancel(object sender, EventArgs args)
{
    Application.Exit();
    // do exit
}

登录表单.cs

public event EventHandler Login;
public event EventHandler Cancel;

private void OnLogin()
{
    if (Login != null)
        Login(this, EventArgs.Empty);
}

private void OnCancel()
{
    if (Login != null)
        Login(this, EventArgs.Empty);
}

private void btnLogin_Click(object sender, EventArgs e)
{
    this.OnLogin();
}

private void btnCancel_Click(object sender, EventArgs e)
{
    this.OnCancel();
}

关于c# - 注销主窗体并显示登录窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7558651/

相关文章:

php - 如何根据用户的状态和角色登录用户

c# - WCF 属性和 linq to sql

c# - 解析 Web 服务响应返回的 xml

c# - Windows 窗体程序中的多个 UI

c# - 我可以使用反射取消订阅系统事件吗?

c# - 系统绘图反转区域构建路径

c# - 为什么这个字段被声明为私有(private)的并且也是只读的?

C# Azure 存储队列 - 从队列读取消息的更有效方法

python - Django:一个 View 的基本身份验证(避免中间件)

php - Mysql Php登录问题