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

Как по закрытии Form2 сделать определенное действие в Form1

13.12.2013, 08:56. Показов 1426. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Помогите пожалуйста, я новичок в )
Столкнулся с проблемой и не смог найти ответа на форумах.
В кратце- есть 2 формы. Код форм 1 для удобства перетащил в program.cs. На форм 1 есть 3 лейбла с пустым текстовым значением. В форме два есть 3 пары радиобаттонов. В зависимости от их значений я присваиваю значение 3-м переменным.
При выходе из форм 2 должно проверяться значение этих переменных и в зависимости от значений в лейблы должны записываться текстовые значения. Подскажите, как это реализовать самым простым способом.
P.S. Если проверять значение переменных по доп кнопке на форм 1 всё хорошо работает (но эта кнопка категорически не нужна).

Вот код:

program.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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
public class Globals
{
// определение статических переменных
// инициализация по умолчанию = 0
public static int urov, temper, areom, q;
}
static class Program
{
/// <summary>
/// Главная точка входа для приложения.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
 
Application.Run(new Form1());
 
}
}
public partial class Form1 : Form
{
 
 
public Form1()
{
InitializeComponent();
}
 
private void groupBox2_Enter(object sender, EventArgs e)
{
 
}
 
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.Show();
 
}
 
 
public void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
}
 
 
private void button2_Click(object sender, System.EventArgs e)
{
{
if (Globals.urov == 1)
{
label2.Text = "Метрошток";
}
 
if (Globals.urov == 0) { label2.Text = "Рулетка"; }
}
{
if (Globals.temper == 1)
{
label3.Text = "Термометр ртутный стеклянный";
}
 
if (Globals.temper == 0) { label3.Text = "Термометр цифровой"; }
}
{
if (Globals.areom == 1)
{
label4.Text = "15 С";
}
 
if (Globals.areom == 0) { label4.Text = "20 С"; }
}
}
 
 
}
}

form 1

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
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 WindowsFormsApplication1
{
 
 
}
 
form 2
 
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 WindowsFormsApplication1
{
 
 
public partial class Form2 : Form
 
{
 
public Form2()
{
 
InitializeComponent();
}
 
private void radioButton6_Click(object sender, EventArgs e)
{
 
int urov = Globals.urov;
Globals.urov = 1;
 
}
 
private void radioButton5_Click(object sender, EventArgs e)
{
int urov = Globals.urov;
Globals.urov = 0;
}
 
private void radioButton4_Click(object sender, EventArgs e)
{
int urov = Globals.temper;
Globals.temper = 1;
}
 
private void radioButton3_Click(object sender, EventArgs e)
{
int temper = Globals.temper;
Globals.temper = 0;
}
 
private void radioButton1_Click(object sender, EventArgs e)
{
int areom = Globals.areom;
Globals.areom = 1;
}
 
private void radioButton2_Click(object sender, EventArgs e)
{
int areom = Globals.areom;
Globals.areom = 0;
}
 
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
 
}
 
private void button1_Click(object sender, EventArgs e)
{
Close();
 
}
}
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.12.2013, 08:56
Ответы с готовыми решениями:

Как обновить контрол Form1 при закрытии диалогового окна Form2?
На Form1 есть dataGridView, вызывается Форм2 шоуДайлогом(), через которую добавляется информация в базу. И вот, при закрытии диалоговой...

Как сделать доступ к переменной из Form2 в Form1?
Например: В Form1 есть 2 кнопки ( Input и Change ); 1.Создаём Form2; При нажатии на Input открывается Form2 в которой есть один...

Как сделать так чтобы Form2 появлялась ровно в том же месте где и Form1
Эту тему читал https://www.cyberforum.ru/windows-forms/thread248400.html Но ответы не помогли. Форма остается на том же месте. И что...

6
29 / 29 / 8
Регистрация: 16.10.2012
Сообщений: 170
13.12.2013, 11:18
есть у меня такая идея , хотя не знаю возможна ли она .
создай Класс с открытым полем , при изменении значения радио буттон та записываешь в это поле значение , а на форме1 используешь оператор switch и выбираешь из поля значение .
0
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 6
13.12.2013, 12:57  [ТС]
Боюсь, так не получится... плюс мне эти переменные, которые приобретают значения от радиобаттонов чуть позже понадобятся в расчетах...
0
48 / 48 / 22
Регистрация: 18.11.2013
Сообщений: 92
13.12.2013, 16:54
как варинат, делаете во 2ой форме 3 свойства аля
C#
1
public Int32 Lable1_value { get { return /*ваша private переменная содержащая значение*/; } }
в первой форме подписываетесь на закрытие второй формы
C#
1
2
3
Form2 frm2 = new Form2();
frm2.Show();
frm2.Form_Closed += frm2_FormClosed;
и в обработчике забираете нужные переменные
C#
1
2
3
4
5
private void frm2_FormClosed(object sender, FormClosedEventArgs e)
{
      Form2 frm2 = sender as Form2;
      // делаете что то с frm2.Lable1_value
}
1
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
13.12.2013, 18:13
Посмотрите вот эту тему Собственное событие

Добавлено через 10 минут
Или вот это
0
 Аватар для 646kapeh064
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
13.12.2013, 22:08
Лучший ответ Сообщение было отмечено как решение

Решение

А еще правильнее, вызывать форму не через Show, а через ShowDialog, т.к. выполнение кода в Form1 остановится, дожидаясь завершения Form2. Для большего удобства, можно еще и DialogResult менять, чтоб идентифицировать действие пользователя.
3
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 6
17.12.2013, 12:42  [ТС]
Решил проблемку =) Спасибо!

в форм 2
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
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 WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
 
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void groupBox2_Enter(object sender, EventArgs e)
        {
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm2 = new Form2();
            frm2.Show();
            frm2.FormClosed += frm2_FormClosed;
        }
 
 
        private void frm2_FormClosed(object sender, FormClosedEventArgs e)
        {
            Form2 frm2 = sender as Form2;
            {
                if (Globals.urov == 1)
                {
                    label2.Text = "Метрошток";
                }
 
                if (Globals.urov == 0) { label2.Text = "Рулетка"; }
            }
            {
                if (Globals.temper == 1)
                {
                    label3.Text = "Термометр ртутный стеклянный";
                }
 
                if (Globals.temper == 0) { label3.Text = "Термометр цифровой"; }
            }
            {
                if (Globals.areom == 1)
                {
                    label4.Text = "15 С";
                }
 
                if (Globals.areom == 0) { label4.Text = "20 С"; }
            } 
        }
 
 
        
 
 
    }  
    
    }
в форм 1
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
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 WindowsFormsApplication1
{
 
    
    public partial class Form2 : Form
   
    {
 
        public Form2()
        {
 
            InitializeComponent();
        }
 
        private void radioButton6_Click(object sender, EventArgs e)
        {
            
            int urov = Globals.urov;
            Globals.urov = 1;
            
        }
 
        private void radioButton5_Click(object sender, EventArgs e)
        {
            int urov = Globals.urov;
            Globals.urov = 0;
        }
 
        private void radioButton4_Click(object sender, EventArgs e)
        {
            int urov = Globals.temper;
            Globals.temper = 1;
        }
 
        private void radioButton3_Click(object sender, EventArgs e)
        {
            int temper = Globals.temper;
            Globals.temper = 0;
        }
 
        private void radioButton1_Click(object sender, EventArgs e)
        {
            int areom = Globals.areom;
            Globals.areom = 1;
        }
 
      private void radioButton2_Click(object sender, EventArgs e)
        {
            int areom = Globals.areom;
            Globals.areom = 0;
        }
      public Int32 Lable1_value { get { return Globals.areom; } }
 
      private void Form2_FormClosing(object sender, FormClosingEventArgs e)
      {
          
      }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Close();
 
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.12.2013, 12:42
Помогаю со студенческими работами здесь

Объясните как сделать так что бы в Form2 можно было изменять свойства кнопок из Form1
Как сделать вот такую задачу: В Form1 есть Кнопка(btn1), и в Form2 есть кнопка(btn2). Нажимаем на кнопку btn1, открывается Form2. В...

Сделать так чтобы Form2 появлялась ровно в том же месте где и Form1
{ Form2 form = new Form2(); form.Show(); } как сделать так чтобы Form2 появлялась ровно в том же месте где и Form1?...

Через Form1 открывают Form2 там открывается Form3 которая меняет данные в Form1. Но они не меняются
В первой форме Main по нажатию кнопки вызываю другую форму private void Button_AddVetrina(object sender, EventArgs e) { ...

Сделать так, чтобы при закрытии Form3, закрывалась и форма Form2
Есть 3 формы Из Form1 по кнопке вызывается Form2, из Form2 опять же по кнопке вызывается Form3. Как Сделать так, чтобы при закрытии ...

Как из form1 вызвать form2?
Здравствуйте, как из form1 вызвать form2? То есть 2ое окно.


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru