Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
1 / 1 / 2
Регистрация: 08.05.2011
Сообщений: 151
1

Передача данных из формы в другую форму

23.05.2015, 16:18. Показов 1495. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, подскажите, пожалуйста. Мне нужно передавать данные из одной формы в другую. Вот, например, на первой форме я регистрирую пользователя и мне с этой формы нужно дальше передать идентификаторо пользователя. далее на следующей форме выбираю тему для теста, т.е. нужно уже тащить дальше еще и идентификатор темы. Подскажите, пожалуйста, как передавать эти все переменные?
вот код форм регистрации и выбора темы
форма регистрации
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
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;
using MySql.Data.MySqlClient;
using System.IO;
namespace forma2
{
    public partial class Form3 : Form
    {
        private int userId;
        private int themeId;
        MySqlConnection conn = new MySqlConnection("server = localhost; user = elena; database = elena; password = ds12199118; port = 3306");
        MySqlCommand command;
        public Form3(int themeId, int userId)
        {
            InitializeComponent();
            this.userId = userId;
            this.themeId = themeId;
        }
 
        private void Form3_Load(object sender, EventArgs e)
        {
            // TODO: данная строка кода позволяет загрузить данные в таблицу "elenaDataSet.users". При необходимости она может быть перемещена или удалена.
            this.usersTableAdapter.Fill(this.elenaDataSet.users);
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
 
            string sql = "INSERT INTO users (familia_users, ima_users, otchestvo_users, pochta, phone, login_id) VALUES('" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "', '" + textBox6.Text + "', '" + textBox7.Text + "')";
            if (conn.State != ConnectionState.Open)
                conn.Open();
            command = new MySqlCommand(sql, conn);
            int x = command.ExecuteNonQuery();
            conn.Close();
            MessageBox.Show(x.ToString() + " Регистрация прошла успешно");
            textBox2.Text = "";
            textBox3.Text = "";
            textBox4.Text = "";
            textBox5.Text = "";
            textBox6.Text = "";
            textBox7.Text = "";
            Form4 f4 = new Form4(userId);
            f4.Show();
            this.Hide();
        }
          /*  string queryString = "select count(case percents.RIGHT_ANSWER when '1' then 1 else null end)/ count(percents.questions)*100 'res' from(  select qu.id_questions questions, count(case au.priznak when '1' then 1 else null end) = count(au.priznak) AND  count(au.priznak) = count(case a.priznak when '1' then 1 else null end) RIGHT_ANSWER  from  question_user qu left join  answer a on qu.id_questions = a.id_questions left join  answer_user au on a.id_answer = au.id_answer where qu.id_themes=1 and qu.id_users=1 group by qu.id_questions) percents";
            try
            {
                
                MySqlCommand command1 = new MySqlCommand(queryString, conn);
               conn.Open();
            var res = command1.ExecuteScalar().ToString();
            int res1 = (int)double.Parse(res);
            Form5 f5 = new Form5(themeId, userId, res1);
            }
            catch (MySqlException ex)
            {
                MessageBox.Show(ex.Message);
            }
        //    f5.Show();
        //    this.Hide();
        }
            */
        private void button2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
}
форма темы
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
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;
using MySql.Data.MySqlClient;
using System.IO;
using System.Data;
 
namespace forma2
{
    public partial class Form4 : Form
    {
        MySqlConnection conn = new MySqlConnection("server = localhost; user = elena; database = elena; password = ds12199118; port = 3306");
        MySqlCommand command;
        private int themeId;
        private int userId;
        private int start;
        private int end;
        public Form4(int userId)
        {
         //   textBox1.Text = userId1.ToString();
            InitializeComponent();
            this.userId = userId;
            conn.Open();
            using (var cmd = new MySqlCommand("SELECT id_themes, theme, parent_id FROM themes ORDER BY parent_id ASC", conn))
            {
                using (var dr = cmd.ExecuteReader())
                {
                    var nodes = new Dictionary<int, TreeNode>();
                    while (dr.Read())
                    {
                        int id = dr.GetInt32(0);
 
                        
                        string name = dr.GetString(1);
                        int? parentId = dr.IsDBNull(2) ? null : (int?)dr.GetInt32(2);
 
                        var node = new TreeNode(name);
                        TreeNode parent;
                        if (parentId == null)
                            treeView1.Nodes.Add(node); // Добавление ноды в контрол TreeView
                        else if (nodes.TryGetValue(parentId.Value, out parent))
                            parent.Nodes.Add(node);
                        nodes.Add(id, node);
                    }
                }
            }
            
        }
        
        private void Form4_Load(object sender, EventArgs e)
        {
            // TODO: данная строка кода позволяет загрузить данные в таблицу "elenaDataSet.themes". При необходимости она может быть перемещена или удалена.
            this.themesTableAdapter.Fill(this.elenaDataSet.themes);
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            
            // var res = 0;
            string queryString = "select count(case percents.RIGHT_ANSWER when '1' then 1 else null end)/ count(percents.questions)*100 'res' from(  select qu.id_questions questions, count(case au.priznak when '1' then 1 else null end) = count(au.priznak) AND  count(au.priznak) = count(case a.priznak when '1' then 1 else null end) RIGHT_ANSWER  from  question_user qu left join  answer a on qu.id_questions = a.id_questions left join  answer_user au on a.id_answer = au.id_answer where qu.id_themes=1 and qu.id_users=1 group by qu.id_questions) percents";
            try
            {
 
                MySqlCommand command = new MySqlCommand(queryString, conn);
                //conn.Open();
                var res = command.ExecuteScalar().ToString();
                if (!"".Equals(res))
                {
                    int res1 = (int)double.Parse(res);
                    Form6 f6 = new Form6(themeId, userId, res1, start, end);
                    f6.Show();
                    this.Hide();
                }
 
                else
                {
                    int res1;
                    //  int res;
 
                    if (Int32.TryParse(res.ToString(), out res1))
                    {
 
                    }
                    
                    Form5 f5 = new Form5(themeId, userId, res1, start, end);
                    f5.Show();
                    this.Hide();
                }
 
            }
            catch (MySqlException ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
 
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            conn.Open();
            /*   MySqlDataAdapter adapter = new MySqlDataAdapter("SELECT theme FROM themes where themes.parent_id  = '" + comboBox1.SelectedValue + "'", conn);
 
 
                //  MySqlCommandBuilder builder = new MySqlCommandBuilder(adapter);
 
                adapter.Fill(elenaDataSet);
                conn.Close();
 
                comboBox2.DataSource = elenaDataSet.Tables["themes"];*/
 
 
 
        }
 
        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
         
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.05.2015, 16:18
Ответы с готовыми решениями:

Передача данных с DataGridView из одной формы, в другую форму с TextBox
Всем Здрасти. Перерыл уже кучу информации. перепробовал кучу методов, но никак не могу сделать...

Передача события от кнопки одной формы в другую форму.
Есть две формы Form1 i Form2. При нажатии на батон в Форм1 появляется Форм2. На Форм2 у меня есть...

Передача сообщения при закрытии формы в другую форму
при нажатии на кнопку на главной форме открывается дочерняя форма при закрытии дочерней надо...

Передача параметра из формы с таблицей в другую форму
Существует таблица1 и таблица2, которые построены на основании запроса(просто разные виды таблиц на...

7
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
23.05.2015, 17:25 2
Цитата Сообщение от elenkarm Посмотреть сообщение
как передавать эти все переменные?
Создайте статический класс со статическими же астосвойствами и через него передавайте что угодно и куда угодно.
0
1 / 1 / 2
Регистрация: 08.05.2011
Сообщений: 151
23.05.2015, 17:28  [ТС] 3
insite2012, можно пример какой-нибудь? если нужно из таблицы передавать user_id, хотя нет тексбокса на форме регистрации пользователя , записывается автоматически и нет ничего напоминающего про пользователя на форме с темами(следующая вторая форма), только темы. читала FAQ, но не поняла как использовать этот статический класс
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
23.05.2015, 17:35 4
elenkarm, даже не знаю, какой и пример вам нужен.
Создайте файл с кодом, в нем напишите:
C#
1
2
3
4
public static class MyClass{
  public static string StringProperty{get;set;}
  public static int IntProperty{get;set;}
}
И вот эти оба свойства будут доступны отовсюду (как статические свойства, то есть обращаться к ним так:
C#
1
MyClass.StringProperty="Bla-Bla-Bla";
)
Ну и считывать точно так же.
1
1 / 1 / 2
Регистрация: 08.05.2011
Сообщений: 151
23.05.2015, 17:53  [ТС] 5
insite2012, можно еще вот вопрос. Создала класс, например, мне нужен userid
C#
1
2
3
4
public static class data
    {
        public static int userId { get; set; }
    }
а как мне воспользоваться им, если на форме регистрации я делаю только запрос
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
            string sql = "INSERT INTO users (familia_users, ima_users, otchestvo_users, pochta, phone, login_id) VALUES('" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "', '" + textBox6.Text + "', '" + textBox7.Text + "')";
            if (conn.State != ConnectionState.Open)
                conn.Open();
            command = new MySqlCommand(sql, conn);
            int x = command.ExecuteNonQuery();
            conn.Close();
            MessageBox.Show(x.ToString() + " Регистрация прошла успешно");
            textBox2.Text = "";
            textBox3.Text = "";
            textBox4.Text = "";
            textBox5.Text = "";
            textBox6.Text = "";
            textBox7.Text = "";
            Form4 f4 = new Form4(userId);
            f4.Show();
            this.Hide();
т.е. как именно знать, что именно этот идентификатор и будет userId из класса?
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
23.05.2015, 18:22 6
Цитата Сообщение от elenkarm Посмотреть сообщение
как именно знать, что именно этот идентификатор и будет userId из класса?
В смысле? Как обратиться именно к нему? Через синтаксис обращения к статическому свойству данного класса, т.е. Имя_типа.Имя_члена
0
1 / 1 / 2
Регистрация: 08.05.2011
Сообщений: 151
23.05.2015, 18:37  [ТС] 7
insite2012, пробую так, но не получается, сначала проставляю, а потом вставляю в текстбокс
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
string sql = "INSERT INTO users (familia_users, ima_users, otchestvo_users, pochta, phone, login_id) VALUES('" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "', '" + textBox6.Text + "', '" + textBox7.Text + "')";
            if (conn.State != ConnectionState.Open)
                conn.Open();
            command = new MySqlCommand(sql, conn);
            int x = command.ExecuteNonQuery();
            conn.Close();
            MessageBox.Show(x.ToString() + " Регистрация прошла успешно");
            textBox2.Text = "";
            textBox3.Text = "";
            textBox4.Text = "";
            textBox5.Text = "";
            textBox6.Text = "";
            textBox7.Text = "";
          
            DataSet elenaDataSet = new DataSet("elenaDataSet");
         
            DataTable userTable;
            userTable = elenaDataSet.Tables["users"];
 
 
           p.setUserId((string)userTable.Rows[0][0]);
            textBox1.Text = p.getUserId();
0
548 / 479 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
24.05.2015, 14:38 8
При передаче данных между формами, использую довольно простой код.
Предварительно в форме 2 откройте int перемениую со свойством public. Назовем ее userId1
в форме 3 откройте 2 int переменные со свойством public. Назовем их userId2 и themeID1
Теперь код передачиданных из ф1 в ф2

C#
1
2
3
4
5
6
7
8
9
10
11
Forms Code
{
       private void button1_Click(object sender, EventArgs e)
       {
          Form2 f2 = new Form2();
           f2.userID1 = userID;
             f2.Show();
              this.Hide();
           
       }
}
код передачи данных из ф2 в ф3

C#
1
2
3
4
5
6
7
8
9
10
11
12
Forms Code
{
       private void button2_Click(object sender, EventArgs e)
       {
          Form3 f3 = new Form3();
           f3.userID2 = userID1;
            f3.themeID1 = themeID;
             f3.Show();
              this.Hide();
           
       }
}
0
24.05.2015, 14:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.05.2015, 14:38
Помогаю со студенческими работами здесь

Передача данных в другую форму
Здравствуйте. Вопрос такой есть страничка, где пользователь вводит ответы на вопросы. (Предположим...

Передача данных в другую форму
Доброго времени суток. Есть такая задача: в окне № 1 открывается таблица, выбирается запись,...

Передача данных в другую форму
Подкопилось сразу несколько вопросов... 1) Мне с главной формы форм1 надо передавать на дочернюю...

Передача значения поля (текст) из одной формы в другую форму Access
Здравствуйте! Подскажите, пожалуйста, как передать значения поля из одной формы в другую? ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru