实现登录页与主页切换

发布时间 2023-12-28 09:55:57作者: ywwwik

我们做winform项目时,用户在输入正确账号密码前提下要跳转主页面,下面说一下简单实现流程。

首先我们新建两个窗体”LoginForm.cs“,”HomeForm.cs“作为登陆页面与主页面。

对于登录页面,主要有账号输入textbox:”account_textBox“;密码输入textbox:”password_textBox“;登录按键Button:"login_btn";

(我这里注册没用上就不写了,眼睛按键是用来做密码明暗文切换的,可以移步去我另一个文章密码明文暗文切换 - ywwwik - 博客园 (cnblogs.com)

 对于首页,只需要创建窗体HomeForm.cs即可

其次要确保在Program.cs中我们的应用程序的主入口点为登录页面(LoginForm);

using System;
using System.Windows.Forms;

namespace SQLProjectDemo
{
    internal static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new LoginForm());
        }
    }
}

 我们只需要在检测用户账号密码输入成功后设置方法HomeSeting();

        public void HomeSetting()
        { 
            HomeForm home = new HomeForm();
            this.Hide();
            home.ShowDialog();
            this.Close();
        }

这里主要用了一个ShowDialog方法,在C# WinForms中,ShowDialog() 方法用于显示一个模态对话框。模态对话框是一种会阻塞用户与应用程序其他窗体交互的对话框,直到该对话框被关闭。

当调用 ShowDialog() 方法时,该方法将显示对话框并等待用户与对话框进行交互,如点击按钮或选择下拉菜单项。在此期间,用户无法与应用程序的其他窗体进行交互,直到对话框被关闭。

补充一下Hide()和CLose()的区别:

在C# WinForms中,this.Hide() 和this.Close()  这两个方法用于控制窗体的显示和关闭行为,但它们之间存在一些重要的区别。

  1. this.Hide():

    • 当调用 this.Hide() 方法时,窗体将从用户界面中隐藏,但它仍然驻留在内存中。这意味着如果用户点击一个按钮或其他操作来重新显示这个窗体,该窗体将恢复到之前的状态(如果它是一个表单)。
    • 隐藏的窗体仍然可以响应事件,例如按钮点击或焦点事件。
    • this.Hide()通常用于隐藏模态对话框或需要从用户界面中暂时移除的窗体。
  2. this.Close():

    • 当调用this.Close()方法时,窗体将关闭并从内存中释放。
    • 如果该窗体是一个模态对话框,那么它会关闭并释放资源,并且应用程序将返回到它之前所在的窗体。
    • 如果该窗体是一个非模态对话框或一个顶层窗体,那么它关闭后应用程序将结束。
    • this.Close()通常用于结束应用程序或关闭不再需要的窗体。

总结一下,this.Hide()用于隐藏窗体并保持其在内存中,而this.Close()用于关闭并释放窗体资源。

我上面设计到一个模态对话框和非模态对话框,其实简单的理解就是:不能同时操作其他界面的就是模态对话框,可以操作其他界面就是非模态对话框。

模态对话框(Modal Dialogue Box)是指在用户想要对对话框以外的应用程序进行操作时,必须首先对该对话框进行响应。如单击【确定】或【取消】按钮等将该对话框关闭。一般来说,Windows应用程序中,对话框分为模态对话框和非模态对话框两种。

非模态(Modeless)对话框,又叫做无模式对话框,当用户打开非模态对话框时,依然可以操作其他窗口。例如,Windows提供的记事本程序中的【查找】对话框。 【查找】对话框不会垄断用户的输入,打开【查找】对话框后,仍可与其他用户界面对象进行交互。用户可以一边查找,一边修改文章。

总的来说,模态对话框和非模态对话框的区别在于当对话框打开时,是否允许用户进行其他对象的操作。