Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 06.06.2022
Сообщений: 7

Передача данных между формами

06.06.2022, 14:23. Показов 1115. Ответов 10
Метки с# (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Есть 2 формы главная в которой есть lable и две дочерние с maskedTextBox.

Я сделал чтоб через кнопку открывалась дочерняя форма куда я ввожу данные. А как сделать чтоб данные с maskedTextBox отразились в главной форме? lable почему-то виден только внутри главной формы, хотя в designer.cs поставил public.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.06.2022, 14:23
Ответы с готовыми решениями:

Передача данных между формами
Есть две формы Fr1 и Fr2. На Fr2 есть к примеру листобокс. Как из Fr1 добавить в ЛистБокс Fr2 данные?

передача данных между формами
Есть форма№1 со справочником валют, форма№2 Курсы валют. Из курсов валют вызывается форма№1 для выбора валют(например при добавлении)....

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

10
172 / 112 / 65
Регистрация: 26.06.2020
Сообщений: 333
06.06.2022, 16:09
Ответы на 7 самых частых вопросов по WinForms
0
0 / 0 / 0
Регистрация: 06.06.2022
Сообщений: 7
06.06.2022, 16:15  [ТС]
Я уже пытался делать как там сказано, но дочерняя форма не видит lable которая находиться родительской. Я не знаю как ее "увидеть"
0
172 / 112 / 65
Регистрация: 26.06.2020
Сообщений: 333
06.06.2022, 16:43
Цитата Сообщение от errq Посмотреть сообщение
Я уже пытался делать как там сказано
Код, с попыткой, покажи.
0
0 / 0 / 0
Регистрация: 06.06.2022
Сообщений: 7
07.06.2022, 13:46  [ТС]
Program.cs:

internal static class Program
C++
1
2
3
4
5
6
7
8
9
10
11
12
{
        /// <summary>
        /// Главная точка входа для приложения.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new ОбщиеДанные());
        }
    }
Кнопка перехода на дочернюю форму:

private void button2_Click(object sender, EventArgs e)
C++
1
2
3
4
5
{
            Form old = new Возраст();
            old.Owner = this;
            old.ShowDialog();
}
Как я пытался передачу сделать спустя ∞ способов:

C#
1
2
3
4
5
6
private void button1_Click(object sender, EventArgs e)
        {
            Form main = this.Owner as Form;
            main.lable5.Text = this.maskedTextBox1.Text    //Причем он мне не высвечивает lable5 хотя на главной форме он есть
            this.Close();
        }

designer.cs главной формы:
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#region Windows Form Designer generated code
 
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.label1 = new System.Windows.Forms.Label();
            this.label2 = new System.Windows.Forms.Label();
            this.label3 = new System.Windows.Forms.Label();
            this.radioButton1 = new System.Windows.Forms.RadioButton();
            this.radioButton2 = new System.Windows.Forms.RadioButton();
            this.label4 = new System.Windows.Forms.Label();
            this.label5 = new System.Windows.Forms.Label();
            this.label6 = new System.Windows.Forms.Label();
            this.button1 = new System.Windows.Forms.Button();
            this.button2 = new System.Windows.Forms.Button();
            this.button3 = new System.Windows.Forms.Button();
            this.SuspendLayout();
            // 
            // label1
            // 
            this.label1.AutoSize = true;
            this.label1.Location = new System.Drawing.Point(7, 53);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(30, 13);
            this.label1.TabIndex = 0;
            this.label1.Text = "Пол:";
            // 
            // label2
            // 
            this.label2.AutoSize = true;
            this.label2.Location = new System.Drawing.Point(12, 121);
            this.label2.Name = "label2";
            this.label2.Size = new System.Drawing.Size(52, 13);
            this.label2.TabIndex = 1;
            this.label2.Text = "Возраст:";
            // 
            // label3
            // 
            this.label3.AutoSize = true;
            this.label3.Location = new System.Drawing.Point(12, 164);
            this.label3.Name = "label3";
            this.label3.Size = new System.Drawing.Size(75, 13);
            this.label3.TabIndex = 2;
            this.label3.Text = "Время отбоя:";
            // 
            // radioButton1
            // 
            this.radioButton1.AutoSize = true;
            this.radioButton1.Location = new System.Drawing.Point(53, 40);
            this.radioButton1.Name = "radioButton1";
            this.radioButton1.Size = new System.Drawing.Size(71, 17);
            this.radioButton1.TabIndex = 3;
            this.radioButton1.TabStop = true;
            this.radioButton1.Text = "Мужской";
            this.radioButton1.UseVisualStyleBackColor = true;
            // 
            // radioButton2
            // 
            this.radioButton2.AutoSize = true;
            this.radioButton2.Location = new System.Drawing.Point(52, 63);
            this.radioButton2.Name = "radioButton2";
            this.radioButton2.Size = new System.Drawing.Size(72, 17);
            this.radioButton2.TabIndex = 4;
            this.radioButton2.TabStop = true;
            this.radioButton2.Text = "Женский";
            this.radioButton2.UseVisualStyleBackColor = true;
            // 
            // label4
            // 
            this.label4.AutoSize = true;
            this.label4.Location = new System.Drawing.Point(80, 9);
            this.label4.Name = "label4";
            this.label4.Size = new System.Drawing.Size(159, 13);
            this.label4.TabIndex = 5;
            this.label4.Text = "Укажите пожалуйста данные:";
            // 
            // label5
            // 
            this.label5.AutoSize = true;
            this.label5.Location = new System.Drawing.Point(70, 121);
            this.label5.Name = "label5";
            this.label5.Size = new System.Drawing.Size(65, 13);
            this.label5.TabIndex = 6;
            this.label5.Text = "Не указано";
            this.label5.Click += new System.EventHandler(this.label5_Click);
            // 
            // label6
            // 
            this.label6.AutoSize = true;
            this.label6.Location = new System.Drawing.Point(93, 164);
            this.label6.Name = "label6";
            this.label6.Size = new System.Drawing.Size(65, 13);
            this.label6.TabIndex = 7;
            this.label6.Text = "Не указано";
            this.label6.Click += new System.EventHandler(this.label6_Click);
            // 
            // button1
            // 
            this.button1.Location = new System.Drawing.Point(138, 205);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(75, 23);
            this.button1.TabIndex = 8;
            this.button1.Text = "Далее";
            this.button1.UseVisualStyleBackColor = true;
            this.button1.Click += new System.EventHandler(this.button1_Click);
            // 
            // button2
            // 
            this.button2.Location = new System.Drawing.Point(138, 116);
            this.button2.Name = "button2";
            this.button2.Size = new System.Drawing.Size(75, 23);
            this.button2.TabIndex = 9;
            this.button2.Text = "Изменить";
            this.button2.UseVisualStyleBackColor = true;
            this.button2.Click += new System.EventHandler(this.button2_Click);
            // 
            // button3
            // 
            this.button3.Location = new System.Drawing.Point(164, 159);
            this.button3.Name = "button3";
            this.button3.Size = new System.Drawing.Size(75, 23);
            this.button3.TabIndex = 10;
            this.button3.Text = "Изменить";
            this.button3.UseVisualStyleBackColor = true;
            this.button3.Click += new System.EventHandler(this.button3_Click);
            // 
            // ОбщиеДанные
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(377, 240);
            this.Controls.Add(this.button3);
            this.Controls.Add(this.button2);
            this.Controls.Add(this.button1);
            this.Controls.Add(this.label6);
            this.Controls.Add(this.label5);
            this.Controls.Add(this.label4);
            this.Controls.Add(this.radioButton2);
            this.Controls.Add(this.radioButton1);
            this.Controls.Add(this.label3);
            this.Controls.Add(this.label2);
            this.Controls.Add(this.label1);
            this.Name = "ОбщиеДанные";
            this.ResumeLayout(false);
            this.PerformLayout();
 
        }
 
        #endregion
 
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.Label label2;
        private System.Windows.Forms.Label label3;
        public System.Windows.Forms.RadioButton radioButton1;
        public System.Windows.Forms.RadioButton radioButton2;
        private System.Windows.Forms.Label label4;
        public System.Windows.Forms.Label label5;
        public System.Windows.Forms.Label label6;
        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.Button button2;
        private System.Windows.Forms.Button button3;
Я не знаю что уже делать...
0
172 / 112 / 65
Регистрация: 26.06.2020
Сообщений: 333
07.06.2022, 15:21
C#
1
Form old = new Возраст();
Локальный указатель. Не виден нигде, кроме этого обработчика клика.
Тут, то же самое:
Цитата Сообщение от errq Посмотреть сообщение
C#
1
Form main = this.Owner as Form;
Добавлено через 40 секунд
Такое впечатление, что ты не читал это:
Ответы на 7 самых частых вопросов по WinForms
0
0 / 0 / 0
Регистрация: 06.06.2022
Сообщений: 7
07.06.2022, 15:55  [ТС]
Я читал, и пытался по этому делать, и не только по этому. Я под конец совсем запутался и не знаю как мне решить эту проблему. Был бы премного благодарен если разъяснишь как это правильно сделать.
0
172 / 112 / 65
Регистрация: 26.06.2020
Сообщений: 333
07.06.2022, 18:03
Цитата Сообщение от errq Посмотреть сообщение
если разъяснишь как это правильно сделать.
Если разъяснения по ссылке не помогли, то и мои разъяснения не помогут. Проект выложи, я на нём покажу.
0
0 / 0 / 0
Регистрация: 06.06.2022
Сообщений: 7
07.06.2022, 19:24  [ТС]
Вот, надеюсь хоть что-то правильно сделал...
Вложения
Тип файла: 7z 123.7z (24.4 Кб, 6 просмотров)
0
172 / 112 / 65
Регистрация: 26.06.2020
Сообщений: 333
07.06.2022, 21:05
Лучший ответ Сообщение было отмечено errq как решение

Решение

Для примера. Поля maskedTextBox1 сделай public:

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
namespace Будильник
{
    public partial class ОбщиеДанные : Form
    {
        public ОбщиеДанные()
        {
            InitializeComponent();
        }
        Возраст old   = null;
        Отбой otb     = null;
        Подъем Podiem = null;
        private void button2_Click(object sender, EventArgs e)
        {
            if (old == null)
            {
                Возраст old = new Возраст();
            }
            old.Owner = this;
            old.ShowDialog();
            this.label5.Text = old.maskedTextBox1.Text;
        }
 
        public void label5_Click(object sender, EventArgs e)
        {
            
        }
 
        public void label6_Click(object sender, EventArgs e)
        {
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            if (Podiem == null)
                Podiem = new Подъем();
            Podiem.Show();
            this.Close();
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            if (otb == null)
                otb = new Отбой();
            otb.Owner = this;
            otb.ShowDialog();
            this.label6.Text = otb.maskedTextBox1.Text;
        }
    }
}
Добавлено через 3 минуты
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
namespace Будильник
{
    public partial class Подъем : Form
    {
        public Подъем()
        {
            InitializeComponent();
        }
        Основное osnovnoe = null;
        private void button1_Click(object sender, EventArgs e)
        {
            if (osnovnoe == null)
                osnovnoe = new Основное();
            osnovnoe.label2.Text = this.maskedTextBox1.Text;
            osnovnoe.Show();
            this.Close();
        }
    }
}
0
0 / 0 / 0
Регистрация: 06.06.2022
Сообщений: 7
08.06.2022, 11:48  [ТС]
Огромнейшее спасибо! Я понял.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.06.2022, 11:48
Помогаю со студенческими работами здесь

Передача данных между формами
У меня такая проблема. Нужно сделать так: Form1 вызывает Form2. На Form2 находиться кнопка button, при нажатии на которую данные из textBox...

Передача данных между формами
Есть 2 формы: Form1 и Form2. На Form2 заполненный datagridview. Как в Form1 получать данные из определённой ячейки datagridview. ...

Передача данных между формами
Добрый день. У меня есть 2 формы на одной форме в textbox'ах задаются случайные числа, мне нужно сделать так, что бы при открытии второй...

Передача данных между формами
Доброго времени суток! У меня тут образовалась одна вроде и простая проблемка, однако я в полнейшем тупике. В общем такая тема: есть 2...

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru