我正在建立一个登录表单,其中有一个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();
}
}
}
答案 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;
我希望它对您有用:)