Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
SuLLeN
23 / 23 / 12
Регистрация: 27.12.2011
Сообщений: 810
1

Передача значения переменной из метода одного класса в метод другого класса

15.11.2014, 14:48. Просмотров 2140. Ответов 4
Метки нет (Все метки)

Добрый вечер!

Есть основная форма Form1 в которой есть метод private void button1_Click(object sender, EventArgs e) обрабатывающий нажатие кнопки "Ок".
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
private void button1_Click(object sender, EventArgs e)
        {
            string myLogin = textBox1.Text;
            string myPassword = textBox2.Text;
 
            string fundUsersQuery = @"SELECT users.login, users.password, users.type FROM users WHERE login='" + myLogin + "' AND password='" + myPassword + "'";
            MySqlCommand myCommand = new MySqlCommand(fundUsersQuery, myConnection);
            try
            {
                myConnection.Open();
            }
            catch
            {
                MessageBox.Show("Подключение отсутствует!", "Ошибка!!!");
            }
 
            MySqlDataReader rd = myCommand.ExecuteReader();
 
            string check_Login = "null";
            string check_Password = "null";
            string check_Type = "null";
            while (rd.Read())
            {
                check_Login = rd.GetString(0);
                check_Password = rd.GetString(1);
                check_Type = rd.GetString(2);
            }
            myConnection.Close();
            if (check_Login == myLogin && check_Password == myPassword)
            {
                this.Hide();
                Form2 fr2 = new Form2();
                fr2.ShowDialog(this);
            }
            else
            {
                MessageBox.Show("Не верный логин или пароль!", "Ошибка!!!");
            }
        }
Есть вторая форма Form2 и метод private void myDataLoad() загружающий список в listView в зависимости от значения переменной check_Type из метода первой формы.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private void myDataLoad()
        {
            if (check_Type == "1")
            {
                for (int i = 0; i < 10; i++)
                {
                    listView1.Items.Add(new ListViewItem("Пункт меню номер 1_" + i));
                }
            }
            else if (check_Type == "0")
            {
                Form2 fr2 = new Form2();
                for (int i = 0; i < 10; i++)
                {
                    listView1.Items.Add(new ListViewItem("Пункт меню номер 2_" + i));
                }
            }
        }
Вот как мне передать значение переменной из метода первой формы в метод второй формы?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2014, 14:48
Ответы с готовыми решениями:

Вызов метода и передача данных из одного класса в другой
Есть два класса, основной(Form1) и дополнительный(Class1). В дополнительном...

Вызов метода класса Form1 из другого класса
using System; using System.Collections.Generic; using System.ComponentModel;...

Передача значения переменных одного класса другому
Всем привет. Нужно передать значения одного класса другому, при этом семантика...

Каким образом можно из метода одного класса, вывести в метод другого класса текст всплывающего сообщения
Доброе время суток! Есть метод отрисовки всплывающего сообщения public...

Вызов метода из другого класса, при этом нельзя создать объект второго класса и метод не статический
У меня есть 2 класса - один с формой и кнопкой на ней и другой класс, у...

4
jetyb
170 / 168 / 73
Регистрация: 26.10.2012
Сообщений: 513
Завершенные тесты: 1
15.11.2014, 15:03 2
Можно в классе Form2 завести ссылку на необходимые данные (например, на саму Form1) и задавать их сразу после создания Form2.
C#
1
2
3
4
5
6
7
8
class Form2
{
     public Form1 form1Reference;//...
}
 
Form2 fr2 = new Form2();
fr2.form1Reference = this;
fr2.ShowDialog(this);
0
SuLLeN
23 / 23 / 12
Регистрация: 27.12.2011
Сообщений: 810
15.11.2014, 16:15  [ТС] 3
jetyb, можно пожалуйста более наглядный пример
0
insite2012
Модератор
Эксперт .NET
4865 / 3818 / 1096
Регистрация: 12.10.2013
Сообщений: 11,095
Записей в блоге: 2
15.11.2014, 16:30 4
SuLLeN, два самых верных и удобных способа: события и static class. Посмотрите FAQ по WinForm, там есть ответы на ваш вопрос.
1
jetyb
170 / 168 / 73
Регистрация: 26.10.2012
Сообщений: 513
Завершенные тесты: 1
15.11.2014, 16:32 5
Лучший ответ Сообщение было отмечено SuLLeN как решение

Решение

Вот. В классе Form2 переменная _scheck_type хранит информацию
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
40
41
42
43
44
45
46
47
48
private void button1_Click(object sender, EventArgs e)
        {
            //....
            string check_Type = "null";
            while (rd.Read())
            {
                check_Login = rd.GetString(0);
                check_Password = rd.GetString(1);
                check_Type = rd.GetString(2);
            }
            myConnection.Close();
            if (check_Login == myLogin && check_Password == myPassword)
            {
                this.Hide();
                Form2 fr2 = new Form2(check_Type); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                fr2.ShowDialog(this);
            }
        }
public class Form2 : Form
{
   string _check_Type;//!!!!!!!!!!!!!!!!!!!!!!!!!!
   
public Form2(string checkType) //!!!!!!!!!!
{
       InicializeComponent();
        _check_Type = checkType;//!!!!!!!!!!!!!!!!!!!!
        ///....
}
private void myDataLoad()
        {
            if (_check_Type == "1") //!!!!!!!!!!!!!!!!!!
            {
                for (int i = 0; i < 10; i++)
                {
                    listView1.Items.Add(new ListViewItem("Пункт меню номер 1_" + i));
                }
            }
            else if (_check_Type == "0")//!!!!!!!!!!!!!!!
            {
                Form2 fr2 = new Form2();
                for (int i = 0; i < 10; i++)
                {
                    listView1.Items.Add(new ListViewItem("Пункт меню номер 2_" + i));
                }
            }
        }
 
}
2
15.11.2014, 16:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2014, 16:32

Как в случае с Dependency Injection внедрять отдельный экземпляр некоторого класса только лишь для одного другого класса
Здравствуйте, пытаюсь понять как же всё таки правильно использовать Dependency...

Использование метода другого класса
Делала уже эту программу, но решила переделать в новый файл (немного...

Вызов метода из другого класса
Добрый день! Приложение спроектировано для почтовой службы и нужно рассчитать...


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

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

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