登录表格结束问题

时间:2017-03-04 08:31:57

标签: c#

我的项目中有两个表单(LoginMain)。我想要实现的是,如果登录成功,我必须显示Main表单并关闭Login表单。我以Login形式使用此方法,在登录成功时关闭Login表单。但是当我关闭登录表单时,所有表单都已关闭。

3 个答案:

答案 0 :(得分:0)

您可以在Program.cs上执行此操作,在后台运行主表单并在成功授权用户时显示:

的Program.cs:

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        MainForm frm = new MainForm();
        Application.Run();
    }

然后在您的主表单上,成功授权后,显示它,在这种情况下,我把它放在构造函数上:

 public MainForm()
    {
        Login frmLogin = new Login();
        frmLogin.Show();

        if (frmLogin.ShowDialog(this) == DialogResult.OK)
        {
            this.Show();
            InitializeComponent();
        } 
    }

请确保在您的登录表单上成功授权后添加以下代码:

this.DialogResult = DialogResult.OK;

答案 1 :(得分:0)

您可以在登录表单上输入以下代码检查登录成功。

        Form2 formmain = new Form2();
        this.Hide();
        if (formmain.ShowDialog() == DialogResult.OK)
        {
            Application.Run(new Form2());

        }
        this.Close();

答案 2 :(得分:0)

当app启动时,你可以直接在program.cs的main方法中使用登录表单。

此示例包含两个名为MainForm和FrmLogin的表单。

<强> Program.cs的

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);

        FrmLogin frmLogin = new FrmLogin();
        UserInfo userInfo = frmLogin.Login();
        if (userInfo != null)
        {
            // open main form with current user
            Application.Run(new MainForm(userInfo));
        }
    }

<强> UserInfo.cs

此类包含loged用户信息

public class UserInfo
{
    // this fields are samples. 
    // you can add  what do you need..
    public int Id { get; set; }
    public string UserName { get; set; }
    public DateTime LoginDate { get; set; }
    public string Roles { get; set; }
}

<强> FrmLogin

此表单自行打开并检查用户并返回结果

您应将取消设置为取消按钮 Dialogresult 属性

// you need add these controls to form
// txtUserName(TextBox)
// txtPassword(TextBox)
// btnOK (Button) // need click event
// btnCANCEL(Button)
public partial class FrmLogin : Form
{
    public FrmLogin()
    {
        InitializeComponent();
    }
    UserInfo currentUser;
    private void btnOK_Click(object sender, EventArgs e)
    {
        var userName = txtUserName.Text;
        var password = txtPassword.Text;
        currentUser = GetUser(userName, password);
        if (currentUser == null)
        {
            MessageBox.Show("invalid username | password");
            this.DialogResult = DialogResult.Cancel;
        }
        this.DialogResult = DialogResult.OK;
    }

    public UserInfo Login()
    {
        var dialogResult = this.ShowDialog();
        if (dialogResult != DialogResult.OK)
            return null;
        return currentUser;
    }
    private UserInfo GetUser(string userName,string passwrod)
    {
        // you should check from where users located area(like db)
        if (userName.Equals("admin") && passwrod.Equals("test"))
        {
            return new UserInfo {
                Id = 1,
                LoginDate = DateTime.Now,
                Roles = "Admin",
                UserName ="admin"
            };
        }
        return null;
    }

}

<强>的MainForm

UserInfo _currentUser;

public partial class MainForm : Form
{
    UserInfo _currentUser;

    public MainForm(UserInfo user)
    {
        _currentUser = user;
        InitializeComponent();
    }
}