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

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

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

Author24 — интернет-сервис помощи студентам
Здравствуйте! Помогите пожалуйста, я новичок в )
Столкнулся с проблемой и не смог найти ответа на форумах.
В кратце- есть 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.12.2013, 08:56
Ответы с готовыми решениями:

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

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

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

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

6
29 / 29 / 8
Регистрация: 16.10.2012
Сообщений: 170
13.12.2013, 11:18 2
есть у меня такая идея , хотя не знаю возможна ли она .
создай Класс с открытым полем , при изменении значения радио буттон та записываешь в это поле значение , а на форме1 используешь оператор switch и выбираешь из поля значение .
0
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 6
13.12.2013, 12:57  [ТС] 3
Боюсь, так не получится... плюс мне эти переменные, которые приобретают значения от радиобаттонов чуть позже понадобятся в расчетах...
0
48 / 48 / 22
Регистрация: 18.11.2013
Сообщений: 92
13.12.2013, 16:54 4
как варинат, делаете во 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 5
Посмотрите вот эту тему Собственное событие

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

Решение

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

в форм 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
17.12.2013, 12:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2013, 12:42
Помогаю со студенческими работами здесь

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

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

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

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


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

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