Примеры входа в C # - PullRequest
       1

Примеры входа в C #

8 голосов
/ 18 августа 2010

У меня проблемы с скрытием моей основной формы для формы входа.Как только пользователь вошел в систему, чтобы закрыть форму входа и показать основную форму.

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

Мне не удалось скрыть основную форму, вызванную с помощью

Application.Run(new MainForm());

Форма входа выглядит следующим образом:

namespace WindowsFormsApplication1
{
    public partial class LoginForm : Form
    {
        public LoginForm()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string username;
            string password;

            username = TB_username.Text;
            password = TB_password.Text;

            if (User.Login(username, password))
            {
                Globals._Login = true;

                // Close login form
                this.Dispose(false);

            }
            else
            {
                MessageBox.Show("Login Failed");
            }

        }
    }
}

Я не могувыяснить, как скрыть, а затем показать основную форму после входа в систему.

Спасибо, любые примеры были бы великолепны

Ответы [ 3 ]

22 голосов
/ 18 августа 2010
  1. Используйте ShowDialog(), чтобы открыть форму входа. Тогда вам не нужно скрывать или отключать Mainform самостоятельно. На самом деле, если вы хотите, чтобы форма входа в систему появлялась в начале приложения, подумайте о том, чтобы показать ее еще до загрузки главной формы:

    static void Main()
    {
        Application.SetCompatibleTextRenderingDefault(false);
        Application.EnableVisualStyles();
        DialogResult result;
        using (var loginForm = new LoginForm())
            result = loginForm.ShowDialog();
        if (result == DialogResult.OK)
        {
            // login was successful
            Application.Run(new Mainform());
        }
    }
    
  2. Внутри формы входа в button1_Click используйте

    DialogResult = DialogResult.OK;
    

    , чтобы закрыть форму входа и передать результат OK в Mainform. Нет необходимости в Dispose().

0 голосов
/ 25 марта 2011

Итак ... Вот мой логин :) Вам может нравиться или не нравиться, но так ... Это моё решение.

    private void FRIIB_Load(object sender, EventArgs e)
    {
        try
        {
            QueryBuilder.insql = Crypto.DecryptStringAES(Model.DecryptRegisteryValue("inSQL"), "inSQL");
        }
        catch (Exception exc)
        {
            MessageBox.Show(exc.Message);
        } // getting connection string
        if (!(new Func<bool>(() =>
                {
                    Func<bool> l = null; l = () =>
                    {
                        using (LoginForm loginDialog = new LoginForm())
                        {
                            loginDialog.ShowDialog();
                            loginDialog.Focus();
                            if (loginDialog.IsExit) return false;
                            else
                                if (loginDialog.IsAuthorized) return true;
                                else return l();
                        }
                    }; return l();
                }
              )()
            )) Close(); 
        else w8( () => LoadData() );
    }

и вот описание кода:

    private void w8(Action action)
    {
        Cursor.Current = Cursors.WaitCursor;
        Application.DoEvents();
        action();
        Cursor.Current = Cursors.Default;
    }

Public Class DamnLogin
    Private db As FRIIB

    Public Sub New(ByVal connection As String)
        db = New FRIIB(connection)
    End Sub

    Public Function Login(ByVal name As String, ByVal password As String) As Boolean
        Dim GetUser = _
           From u In db.GetTable(Of [User])() _
           Where u.Name = name _
           And u.Password = password _
           Select u
        Return GetUser.Count = 0
    End Function
End Class

let Login usename password = 
    new LinqBase.DamnLogin(insql) |> fun damn ->
        not <| damn.Login(usename,password)

и форма входа

public partial class LoginForm : Form
{
    bool isAuthorized;
    bool exit;

    public bool IsAuthorized    { get { return this.isAuthorized;   } }
    public bool IsExit          { get { return this.exit;           } }

    public LoginForm()
    {
        isAuthorized    = false;
        exit            = false;

        InitializeComponent();
    }

    private void Close_Click(object sender, EventArgs e)
    {
        exit = true; 
        this.Close();
    }

    private void LoginButton_Click(object sender, EventArgs e)
    {
        if (Login.Text != "")
        {
            if (Login.Text.ToUpper() == "ADMIN")
            {
                if (Password.Text == Crypto.DecryptStringAES(Model.DecryptRegisteryValue("Password"), "Password"))
                    isAuthorized = true;
            }
            else
            {
                if (QueryBuilder.Login(Login.Text, Password.Text))
                    isAuthorized = true;
            }
        }

        this.Close();
    }
}
0 голосов
/ 18 августа 2010

Используйте функцию ShowDialog () в форме входа в систему, чтобы загрузить форму входа из основной формы приложения. Это предотвратит отображение MainForm до тех пор, пока не завершится LoginForm.

private void MainForm_Load(object sender, EventArgs e) {
    var loginForm = new LoginForm();
    loginForm.ShowDialog();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...