Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.54/26: Рейтинг темы: голосов - 26, средняя оценка - 4.54
10 / 10 / 7
Регистрация: 17.05.2009
Сообщений: 140
1

Как передать управление от одной формы другой?

30.03.2014, 09:07. Просмотров 4661. Ответов 17
Метки нет (Все метки)

Здравствуйте.
Не могу понять как передать управление из одной формы в другую.
В начале запуска программы запускается форма авторизации, в которой пользователь должен ввести логин, пасс. При нажатии копки вход, должна пройти проверка логин и пасс в бд. Если есть, то передать управление главной форме...
вызов форм:
C#
1
2
3
4
5
6
7
8
DialogResult result1;
                using (var FirstForm = new Login())
                    result1 = FirstForm.ShowDialog();
                if (result1 == DialogResult.OK)
                {
                    
                    Application.Run(new Form1());
                }
Проблема в том, что не могу придумать как сделать так, чтобы только после удачной авторизации происходило
C#
1
2
3
4
5
private void bLogin_Click(object sender, EventArgs e)
        {
            //выше проверка на авторизацию 
                bLogin.DialogResult = System.Windows.Forms.DialogResult.OK;
        }
исходя из этого, кода необходимо второе нажатие кнопки..
Но что-то мне подсказывает, что есть проще вариант решения задачи. Как ее решить?

Добавлено через 13 часов 20 минут
Пытался совсем уж изврат сделать..
в Program закоментил строку Application.Run(new Form1());
а в форме входа вызвать
C#
1
2
Form1 f = new Form1();
                f.Show();
Но тут еще одна проблема, как закрыть форму входа... Если ее просто закрыть Close(), то закрывается и главная форма....

Помогите решить проблему
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.03.2014, 09:07
Ответы с готовыми решениями:

Как передать данные из одной формы другой, если формы вызываються через MDI форму?
Я создал MDI форму для которой добавил две toolstrip button вызывающие форму1 и форму2 внутри MDI...

Как передать значение с одной формы на другой
В общем есть 3 формы: -авторизация -меню -теория с начало пользователь авторизуется и если он...

Передать bitmap из одной формы, изменить его в другой и вернуть обратно. как?
public Create(Bitmap bmp) { InitializeComponent(); ...

Как передать данные с одной формы на страницу с другой формой?
Есть страница с формой заказа там есть номер телефона, как передать номер телефона на страницу с...

17
Модератор
Эксперт .NET
5074 / 3983 / 1145
Регистрация: 12.10.2013
Сообщений: 11,582
Записей в блоге: 2
30.03.2014, 10:15 2
Лучший ответ Сообщение было отмечено skynet80 как решение

Решение

И в чем проблема?
Код основной формы:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace skynet80
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.Load+=new EventHandler(Form1_Load);
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            Login login = new Login();
            login.FormClosing+=new FormClosingEventHandler(login_FormClosing);
            login.ShowDialog();           
        }
        private void login_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (!((Login)sender).connectStatus)
            {
                MessageBox.Show("Логин/пароль не верный!", "Ошибка входа!");
                this.Close();
            }
        }          
    }
}
Код формы проверки логина и пароля (на форме кнопка и два текстовых поля):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace skynet80
{
    public partial class Login : Form
    {      
        public bool connectStatus
        {
            get;
            private set;
        }
        public Login()
        {
            InitializeComponent();
            this.Load+=new EventHandler(Login_Load);
            button1.Click+=new EventHandler(button1_Click);
        }
        private void Login_Load(object sender, EventArgs e)
        {
            connectStatus = false;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            //Тут соединяемся с БД .....
            //и проверяем корректность логина и пароля...
            //
            if (txtLogin.Text == "QWERTY" && txtPassword.Text == "QWERTY")
                connectStatus = true;
            this.Close();           
        }      
    }
}
0
10 / 10 / 7
Регистрация: 17.05.2009
Сообщений: 140
30.03.2014, 11:42  [ТС] 3
insite2012, если я правильно понял, то в Вашем примере сначала откроется главная форма, а поверх нее форма входа. Но мне нужно чтобы до появления главной отобразить форму входа.
Делал вот так, но тут проблема в том что если изначально у кнопки свойств DialogResult стоит значение OK, то при любом нажатии (даже если пароль и логин неверны откроется главная форма. если устанавливать это свойство после удачно проверки, то придется нажимать кнопку второй раз, чтобы сработало
result1 == DialogResult.OK
C#
1
2
3
4
5
6
7
8
9
10
11
12
static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
DialogResult result1;
                using (var FirstForm = new Login())
                    result1 = FirstForm.ShowDialog();
                if (result1 == DialogResult.OK)
                {
                    
                    Application.Run(new Form1());
                }
0
Модератор
Эксперт .NET
5074 / 3983 / 1145
Регистрация: 12.10.2013
Сообщений: 11,582
Записей в блоге: 2
30.03.2014, 11:56 4
Нет, Вы именно что поняли не правильно. Сначала появляется форма авторизации, и если логин и пароль совпали, она закрывается и появляется основная форма. Создайте проект, скопируйте код и проверьте.
Вы обратите внимание, что форма авторизации вызывается в виде ShowDialog(), т.е. модальное окно. Пока вы его не закроете, никаких действий происходить не будет.
0
10 / 10 / 7
Регистрация: 17.05.2009
Сообщений: 140
30.03.2014, 12:52  [ТС] 5
insite2012, да Вы правы, но этот вариант работает с ошибкой... я не пойму почему происходит следующее
1. Если нажимать на крестик(закрытие программы), то выводится сообщение типа неверный пароль... Затем форма закрывается и тут же открывается, опять форма Login, если ее еще раз закрыть то открывается форма Form1 безо всякого пароля...
2. аналогичное происходит при нажатии на копку...

Почему форма логин по два раза открывается?
0
Модератор
Эксперт .NET
5074 / 3983 / 1145
Регистрация: 12.10.2013
Сообщений: 11,582
Записей в блоге: 2
30.03.2014, 12:59 6
У меня все работает. Вот Вам весь проект, проверяйте.
0
Вложения
Тип файла: rar skynet80.rar (44.5 Кб, 26 просмотров)
10 / 10 / 7
Регистрация: 17.05.2009
Сообщений: 140
30.03.2014, 13:34  [ТС] 7
Я не понимаю что такое... Ваш проект работает как надо. Создаю свой, копирую Ваш код... запускаю и происходит то, что описал выше. Из-за чего это происходит?
0
Вложения
Тип файла: rar skynet80.rar (44.9 Кб, 9 просмотров)
10 / 10 / 7
Регистрация: 17.05.2009
Сообщений: 140
30.03.2014, 13:42  [ТС] 8
Посмотрите проект, там абсолютно весь Ваш код. Но почему-то работает не так ка хотелось бы.
0
Модератор
Эксперт .NET
5074 / 3983 / 1145
Регистрация: 12.10.2013
Сообщений: 11,582
Записей в блоге: 2
30.03.2014, 13:48 9
Сейчас...
0
Модератор
Эксперт .NET
5074 / 3983 / 1145
Регистрация: 12.10.2013
Сообщений: 11,582
Записей в блоге: 2
30.03.2014, 14:00 10
Вы что-то с файлами проекта не то натворили... Вот что пишет при пошаговой отладке Вашего проекта (при отладке моего такого не возникает).
0
Миниатюры
Как передать управление от одной формы другой?  
10 / 10 / 7
Регистрация: 17.05.2009
Сообщений: 140
30.03.2014, 14:03  [ТС] 11
insite2012, в том то и дело, что ничего не менял... абсолютно ничего. Только создаю проект, добавлял форму и копировал Ваш код...
0
Модератор
Эксперт .NET
5074 / 3983 / 1145
Регистрация: 12.10.2013
Сообщений: 11,582
Записей в блоге: 2
30.03.2014, 14:16 12
Хм... Интересно...
0
10 / 10 / 7
Регистрация: 17.05.2009
Сообщений: 140
30.03.2014, 14:19  [ТС] 13
уже не знаю что и делать. может как то по другому можно сделать то действие? а то нужен этот механизм работы....
0
Модератор
Эксперт .NET
5074 / 3983 / 1145
Регистрация: 12.10.2013
Сообщений: 11,582
Записей в блоге: 2
30.03.2014, 14:25 14
Знаете, у меня такое впечатление, что вы просто вставляли файлами из одного проекта в другой. Создайте новый проект, в нем форма (это основная). Добавьте еще форму (это форма авторизации). И руками напишите весь код, и в одну и в другую. Потом проверьте.
1
10 / 10 / 7
Регистрация: 17.05.2009
Сообщений: 140
30.03.2014, 14:26  [ТС] 15
insite2012, нет не файлами... копированием текста из одной в другуйю... сейчас сделаю ручками. отпишусь потом
0
Модератор
Эксперт .NET
5074 / 3983 / 1145
Регистрация: 12.10.2013
Сообщений: 11,582
Записей в блоге: 2
30.03.2014, 14:27 16
Делайте. У меня при отладке Вашего проекта вылетает предупреждение, а вот при отладке моего - все в порядке...
0
10 / 10 / 7
Регистрация: 17.05.2009
Сообщений: 140
30.03.2014, 14:35  [ТС] 17
insite2012, да Вы правы были. Видимо при прописывании ручками студия еще где то делает записи об обработчиках событий и т.д. Ручками написал. все заработало.
Спасибо большое!!
0
Модератор
Эксперт .NET
5074 / 3983 / 1145
Регистрация: 12.10.2013
Сообщений: 11,582
Записей в блоге: 2
30.03.2014, 14:36 18
На здоровье.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2014, 14:36

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как передать данные из одной dgv одной формы в dgv другой?
Проблема номер 2 Моя программа работает с базой данных, записывает, удаляет и считывает данные...

Как передать value с input одной формы, к другой input формы, по нажатию кнопки
Как передать value с input одной формы, к другой input формы, по нажатию кнопки скрипт ...

Управление объектами на одной форме с другой формы
Здравствуйте! имеются две независимые формы. грубо говоря, одна для ввода (form1), другая для...

Передать значение из txtBox одной формы в переменную другой
Всем привет! Объясните, пожалуйста, как из одной формы Form2 textBox1 передать значения в Form1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.