Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > закрытие формы


Автор: DEADLY 21.9.2009, 07:02
есть главная форма запроса пароля
после проверки пароля эту форму закрыть неполучается а при выполнении  this.hide(); при закрытии другой формы приложение остается висеть в памяти;
Код

private void button2_Click(object sender, EventArgs e)
        {            
            string login = "", pass = "";
            login = login1.Text;
            pass = pass1.Text;
            OracleDataReader queryResult;
            LoraLib.OracleDb lora = new LoraLib.OracleDb();
            lora.Connect("***", "****", "190.160.2.205");
            queryResult = lora.Select("SELECT login,pass FROM uit.users WHERE login = '" + login1.Text + "' and pass = '" + pass1.Text + "'");
            if (queryResult.HasRows) 
            {
                this.Hide();
                main about = new main();
                about.ShowDialog();                
                
            }
            else
            {
                MessageBox.Show("логин или пароль неверен!!!");
            }
            queryResult.Close();
            lora.Disonnect();
        }


Автор: diadiavova 21.9.2009, 08:33
this.Close()

Автор: DEADLY 21.9.2009, 09:10
Цитата(diadiavova @ 21.9.2009,  08:33)
this.Close()

закрывает все приложение, без вызова формы main

Автор: diadiavova 21.9.2009, 09:13
Метод Close надо вызвать для того окно, которое надо закрыть. Если этот код выполняется в главном окнеЮ то закрывается именно оно. В этом случае вместо this надо использовать ссылку на закрываемое окно.

Автор: Lunatic2009 21.9.2009, 12:20
Попробуйте так:

Код

this.Hide();
main about = new main();
about.ShowDialog();
this.Close();

Автор: ДобренькийПапаша 21.9.2009, 15:27
Код

private static void Main()
        {
            bool appEx;
            var muteAppEx = new Mutex(true, "TaxAcademy", out appEx);

            #region Вход в приложение

            if (appEx)
            {
                try
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    using (var curF = new AuthenticationForm())
                    {
                        do
                        {
                            if (curF.ShowDialog() == DialogResult.OK)
                            {
                                Application.Run(new MainForm());
                            }
                        } while (curF.DialogResult == DialogResult.No);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK,
                                    MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
                }
            }
            else
            {
                MessageBox.Show("Это приложение уже запущено.", "Информация", MessageBoxButtons.OK,
                                MessageBoxIcon.Information, MessageBoxDefaultButton.Button1,
                                MessageBoxOptions.RightAlign);
            }

//метод в классе аутентификации
private void LogButton_Click(object sender, EventArgs e)
        {
            ProcInvoke.ServerPath = serverPath.Text;
            ProcInvoke.DataBasePath = basePath.Text;

            if (LogOn.Text.Length != 0 && pwd.Text.Length != 0)
            {
                if (ValidateUser(LogOn.Text, pwd.Text))
                {
                    ProcInvoke.Login=LogOn.Text;
                    DialogResult = DialogResult.OK;
                }
                else
                {
                    
                    MessageBox.Show("Имя пользователя или пароль не действителен",
                                    "Аутентификация", MessageBoxButtons.OK,
                                    MessageBoxIcon.Warning);
                    LogOn.Text = "";
                    pwd.Text = "";
                }
            }
            else
            {
                LogOn.Text = "";
                pwd.Text = "";
                MessageBox.Show("Введите логин и пароль",
                                "Ошибка аутентификации",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
            }
        }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)