Как сделать значение bool ложным при перекрестном нажатии кнопки? - PullRequest
0 голосов
/ 03 декабря 2018

Я создаю форму входа в систему, в которой у меня есть значение bool, которое становится истинным, когда пользователь нажимает кнопку входа на странице входа в систему. Теперь я хочу, чтобы, если пользователь нажимает на перекрестную кнопку, чтобы закрыть форму MDI, значение bool должно статьfalse и пользователь может снова войти в систему из формы входа. Как я могу это сделать?В моем случае я не могу сделать это, когда я нажимаю на крестик, он показывает сообщение об ошибке «Вы уже вошли в систему», но если форма закрыта, это должно позволить мне войти снова.пожалуйста, помогите мне выбраться из этого.

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 голосов
/ 03 декабря 2018

Я вижу, что вы создали переменную IsLoggedIn как локальную переменную, мы не можем использовать локальную переменную для идентификации пользователя, вошел он или нет.

Вам придется использовать глобальную переменную для этого.

Вы можете сделать с помощью статического класса.как это:

static class Global
{
private static Bool IsLoggedIn;

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

и для использования любого, где вы можете написать:

GlobalClass.IsLoggedIn=true;

Я надеюсь, что это работает для вас:)

0 голосов
/ 03 декабря 2018

Если вы закрываете окно, вы должны установить значение false.

 private void Exit_Click(object sender, EventArgs e)
    {
        IsLoggedIn = false;
        this.Close();
    }
0 голосов
/ 03 декабря 2018

Если вы хотите установить значение bool false, когда пользователь нажимает на крестовую кнопку Welcome_Form, сделайте IsLoggedIn общедоступной статической в ​​LogIin:

// In LogIin form:
 public static bool IsLoggedIn;

И установите значение false из события FormClosingWelcome_Form:

private void Form_WelCome_FormClosing(object sender, FormClosingEventArgs e) 
{
 LogIin.IsLoggedIn = false;
}
0 голосов
/ 03 декабря 2018

Добавьте этот код в ваш обработчик событий кнопок.

IsLoggedIn = false;

Или

IsLoggedIn = true;

Создайте дополнительный столбец в базе данных (например, IsLoggedIn) и сохраните в нем значение при его изменении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...