如何在单击交叉按钮时使布尔值错误?

时间:2018-12-03 06:16:10

标签: c# c#-4.0

我正在建立一个登录表单,其中有一个bool值,当用户从登录页面单击登录按钮时,它会变为true。现在,我希望如果用户单击十字按钮以关闭MDI表单,则bool值应变为否,用户可以从登录表单再次登录。我该怎么办? 就我而言,当我单击十字按钮时,它无法显示错误消息“您已经登录”,但是如果关闭表格,它应该允许我再次登录。 请帮助我摆脱困境。

Here is the code for the login form----

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace Login
{
    public partial class LogIin : Form
    {
        public bool IsLoggedIn { get; set; }


        public LogIin()
        {
            InitializeComponent();
        }

        private void LogIn_Click(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection(@"Data Source=IBMPC\SQLEXPRESS;Initial Catalog=UserData;Integrated Security=True");
            SqlCommand cmd = new SqlCommand("select * from User_Credential where UserName = @UserName and Passwords = @Passwords", con);

            cmd.Parameters.AddWithValue("@UserName", UsTxt.Text);
            cmd.Parameters.AddWithValue("@Passwords", PassTxt.Text);
            SqlDataAdapter sda = new SqlDataAdapter(cmd);


            DataTable dt = new DataTable();
            sda.Fill(dt);
            con.Open();
            int i = cmd.ExecuteNonQuery();
            con.Close();

            {

                if (!IsLoggedIn)
                {

                    if (dt.Rows.Count > 0)
                    {

                        Welcome_Form wf = new Welcome_Form();

                        wf.Show();
                        IsLoggedIn = true;
                    }
                    else
                    {
                        MessageBox.Show("Please enter Correct Username and Password");
                    }
                }
                else
                {
                    MessageBox.Show("You are already logged in", "Error");
                }

            }
        }


        private void Exit_Click(object sender, EventArgs e)
        {

            this.Close();
        }
    }
}

4 个答案:

答案 0 :(得分:0)

将此代码添加到按钮事件处理程序中。

IsLoggedIn = false;

IsLoggedIn = true;

在数据库中创建一个附加列(例如IsLoggedIn),并在更改时将值保存到其中。

答案 1 :(得分:0)

如果关闭窗口,则必须将值设置为false。

 private void Exit_Click(object sender, EventArgs e)
    {
        IsLoggedIn = false;
        this.Close();
    }

答案 2 :(得分:0)

如果要在用户单击Welcome_Form的十字按钮时将布尔值设置为false,请在LogIin中将IsLoggedIn公共静态设置为:

// In LogIin form:
 public static bool IsLoggedIn;

并在Welcome_Form的FormClosing事件中将值设置为false:

private void Form_WelCome_FormClosing(object sender, FormClosingEventArgs e) 
{
 LogIin.IsLoggedIn = false;
}

答案 3 :(得分:0)

我可以看到您已将IsLoggedIn变量创建为本地变量,我们无法使用本地变量来标识用户是否登录。

您将不得不使用全局变量。

您可以通过使用静态类来完成。像这样:

static class Global
{
private static Bool IsLoggedIn;

public static Bool IsLoggedIn
{
    get { return IsLoggedIn; }
    set { IsLoggedIn= value; }
}
}

以及使用您可以写的任何地方:

GlobalClass.IsLoggedIn=true;

我希望它对您有用:)