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

Обращение к компонентам другой формы

06.04.2022, 16:19. Показов 1756. Ответов 17

Author24 — интернет-сервис помощи студентам
Пишу тест с несколькими формами, но, тк я только начинающий, не знаю как сделать ссылку на компонент из другой формы. Задача такая: Есть 3 формы, на каждой расположены радиокнопки, листбоксы, комбобоксы. На последней форме есть кнопка "проверить". Нажав на нее должны посчитаться баллы, но не только с последней формы, но и с предыдущих.

Вот пока то, что имеется:

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
namespace Тест
{
    public partial class Form1 : Form
    {
        public static string fam;
        public static string imy;
 
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            Application.Exit();
        }
 
        private void button1_Click(object sender, EventArgs e)
        { 
            double  ball =0;
            if (comboBox1.SelectedIndex == 0) ball++;
            if (radioButton5.Checked == true) ball++;
            if (radioButton1.Checked == true) ball++;
            if (listBox1.SelectedIndex == 1) ball++;
            Hide();   
            Form2 frm = new Form2();
            frm.Show();
        }
    }
}
2 форма

C#
1
2
3
4
5
6
7
8
9
10
11
12
private void button2_Click(object sender, EventArgs e)
        {
            double ball = 0; 
            if (comboBox1.SelectedIndex == 1) ball++;
            if (radioButton6.Checked == true) ball++;
            if (radioButton1.Checked == true) ball++;
            if (listBox1.SelectedIndex == 1) ball++;
            Hide();
            Form3 frm = new Form3();
            frm.Show();
        }
    }
3 форма

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
namespace Тест
{
    public partial class Form3 : Form
    {
        public Form3()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Hide();
            Form2 frm = new Form2();
            frm.Show();
        }
 
 
        private void button2_Click(object sender, EventArgs e)
        {
            double ball = 0;
            if (radioButton2.Checked == true) ball++;
            if (comboBox1.SelectedIndex == 2) ball++;
            label1.Text = "ФИО: " + Form1.fam + " " + Form1.imy + "\nВы получили баллов - " + ball.ToString();
        }
    }
}

Что и куда написать, чтобы это можно было сделать? Прошу помогите, пожалуйста
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2022, 16:19
Ответы с готовыми решениями:

Обращение к компонентам другой формы
добрый день, господа! у меня такой вопрос. есть 2 формы Form1 и Form2. на первой форме...

Обращение к компонентам формы в пользовательском классе
Друзья, изучаю C# по путно теория с практикой и сейчас уткнулся в маленькую проблему и не могу ее...

Доступ к компонентам другой формы
Здраствуйте. Из главной формы вызываю модальную форму. В коде обработчика события компонента второй...

Не удается обращение к элементам и методам формы из другой формы
Добрый день, Создал 2 формы, на второй есть паблик метод, элемент и несколько переменных, доступа...

Обращение к переменной из другой формы
Здравствуйте) Подскажите у меня в одной форме имеется коллекция, как мне передать или как...

17
702 / 440 / 233
Регистрация: 03.01.2017
Сообщений: 1,256
06.04.2022, 23:01 2
Создайте поле во всех формах, которое будет хранить баллы с предыдущей формы. При вызове новых форм, передавайте через конструктор баллы текущей формы.
А ну вот у вас есть локальная переменная в событии нажатия на кнопку - double ball.
Сделайте ее полем во 2 и 3 форме, например:
C#
1
2
3
private double ball;
public Form2(double ball_)
{ ball = ball_;}
0
0 / 0 / 0
Регистрация: 06.04.2022
Сообщений: 8
07.04.2022, 06:19  [ТС] 3
Извините, все равно не совсем понимаю( Подставляю то, что вы мне скинули во вторую форму, но мне выдается ошибка, пробую в разные места подставлять, все также ошибка. Не могли бы вы показать куда именно мне вставить это в мой код? Я просто совсем новичок, торможу многовато. Понимаю, что мне надо сделать, но не знаю как это все пишется
0
2806 / 1676 / 884
Регистрация: 14.04.2015
Сообщений: 5,717
07.04.2022, 10:36 4
th_vincenta, какая ошибка? Вам же даже код готовый скинули для второй формы, просто найти такое же, и добавить вместо него. а в первой форме во время создания экземпляра второй формы добавить эту переменную Form2 frm = new Form2(ball);
а вообще почитайте эту статью, там все написано:
Ответы на 7 самых частых вопросов по WinForms
0
0 / 0 / 0
Регистрация: 06.04.2022
Сообщений: 8
07.04.2022, 14:41  [ТС] 5
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
th_vincenta, какая ошибка? Вам же даже код готовый скинули для второй формы, просто найти такое же, и добавить вместо него. а в первой форме во время создания экземпляра второй формы добавить эту переменную Form2 frm = new Form2(ball);
а вообще почитайте эту статью, там все написано:
Ответы на 7 самых частых вопросов по WinForms
Очевидно, что я уже читал эту статью и многие другие, но до меня не доходит. Вставлял я код и с вашими правками, ошибки все равно выходят. Опять же говорю, что я понимаю примерно, что мне надо сделать, но я не понимаю куда это писать, в какое место, что заменить. Потому и попросил, если не сложно, скинуть как должен выглядеть мой код с вашими правками, потому что мне он выдает много ошибок, которые я не понимаю.
0
56 / 39 / 20
Регистрация: 11.06.2021
Сообщений: 154
07.04.2022, 14:43 6
th_vincenta, почитай эту ветку Управление элементом button из другой формы
Тут 2 формы, но смысл должен быть понятен.
0
0 / 0 / 0
Регистрация: 06.04.2022
Сообщений: 8
07.04.2022, 14:54  [ТС] 7
Цитата Сообщение от filh Посмотреть сообщение
th_vincenta, почитай эту ветку Управление элементом button из другой формы
Тут 2 формы, но смысл должен быть понятен.
Ахх, спасибо, что пытаетесь объяснить мне, но у меня не получается. Пожаалуйста, скиньте мой код с вашими правками, это сложно для меня. Из-за наличия If в коде, у меня все путается в голове
0
56 / 39 / 20
Регистрация: 11.06.2021
Сообщений: 154
07.04.2022, 15:26 8
th_vincenta, давайте проект, чтож мелочиться и куски показывать.
0
0 / 0 / 0
Регистрация: 06.04.2022
Сообщений: 8
07.04.2022, 15:50  [ТС] 9
Цитата Сообщение от filh Посмотреть сообщение
th_vincenta, давайте проект, чтож мелочиться и куски показывать.
Спасибо большое. Да вот здесь в теме итак весь код был:

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
namespace Тест
{
    public partial class Form2 : Form
    {
        public static string fam;
        public static string imy;
 
        public Form2()
        {
            InitializeComponent();
        }
        private void Form2_FormClosed(object sender, FormClosedEventArgs e)
        {
            Application.Exit();
        }
 
        private void button1_Click(object sender, EventArgs e)
        { 
            double  ball =0;
            if (comboBox1.SelectedIndex == 0) ball++;
            if (radioButton5.Checked == true) ball++;
            if (radioButton1.Checked == true) ball++;
            if (listBox1.SelectedIndex == 1) ball++;
            //дайте передачу управления 3 форме
            Hide();   
            //спрятать 2 форму
            Form3 frm = new Form3();
            frm.Show();
        }
    }
}
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
namespace Тест
{
    public partial class Form3 : Form
    {
    public Form3()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            //дайте передачу управления 2 форме
            Hide();
            //спрятать 3 форму
            Form2 frm = new Form2();
            frm.Show();
        }
        
        private void button2_Click(object sender, EventArgs e)
        {
            double ball = 0; 
            if (comboBox1.SelectedIndex == 1) ball++;
            if (radioButton6.Checked == true) ball++;
            if (radioButton1.Checked == true) ball++;
            if (listBox1.SelectedIndex == 1) ball++;
            //дайте передачу управления 4 форме
            Hide();
            //спрятать 3 форму
            Form4 frm = new Form4();
            frm.Show();
        }
    }
}
3 форма
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
namespace Тест
{
    public partial class Form4 : Form
    {
        public Form4()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            //дайте передачу управления 3 форме
            Hide();
            //спрятать 4 форму
            Form3 frm = new Form3();
            frm.Show();
        }
 
 
        private void button2_Click(object sender, EventArgs e)
        {
            double ball = 0;
            if (radioButton2.Checked == true) ball++;
            if (comboBox1.SelectedIndex == 2) ball++;
            label1.Text = "ФИО: " + Form1.fam + " " + Form1.imy + "\nВы получили баллов - " + ball.ToString();
        }
    }
}
(У меня вообще 4 формы, но первая никакой роли не играет в этом вопросе)
0
702 / 440 / 233
Регистрация: 03.01.2017
Сообщений: 1,256
07.04.2022, 15:52 10
Лучший ответ Сообщение было отмечено th_vincenta как решение

Решение

th_vincenta, вы знаете что такое конструктор класса? Параметры конструктора класса? Поля класса?
Цитата Сообщение от th_vincenta Посмотреть сообщение
Вставлял я код и с вашими правками, ошибки все равно выходят
Какие ошибки?
Цитата Сообщение от th_vincenta Посмотреть сообщение
но у меня не получается
Что не получается?
В общем и целом, изучите то, что на первой строке написано, и потом поймете, о чем тут говорят, а пока вот.
Кликните здесь для просмотра всего текста
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
namespace Тест
{
    public partial class Form1 : Form
    {
        public static string fam;
        public static string imy;
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            Application.Exit();
        }
        private void button1_Click(object sender, EventArgs e)
        { 
            double  ball = 0;
            if (comboBox1.SelectedIndex == 0) ball++;
            if (radioButton5.Checked == true) ball++;
            if (radioButton1.Checked == true) ball++;
            if (listBox1.SelectedIndex == 1) ball++;
            Hide();   
            Form2 frm = new Form2(ball);
            frm.Show();
        }
    }
    public partial class Form2 : Form
    {
        private double ball = 0;
        public Form2(double ball_)
        {
            InitializeComponent();
            ball+=ball_;
        }
        private void button2_Click(object sender, EventArgs e)
        {
            if (comboBox1.SelectedIndex == 1) ball++;
            if (radioButton6.Checked == true) ball++;
            if (radioButton1.Checked == true) ball++;
            if (listBox1.SelectedIndex == 1) ball++;
            Hide();
            Form3 frm = new Form3(ball);
            frm.Show();
        }
    }
    public partial class Form3 : Form
    {
        private double ball = 0;
        public Form3(double ball_)
        {
            InitializeComponent();
            ball+=ball_;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Hide();
            Form2 frm = new Form2(ball);
            frm.Show();
        }
        private void button2_Click(object sender, EventArgs e)
        {
            if (radioButton2.Checked == true) ball++;
            if (comboBox1.SelectedIndex == 2) ball++;
            label1.Text = "ФИО: " + Form1.fam + " " + Form1.imy + "\nВы получили баллов - " + ball.ToString();
        }
    }
}
1
0 / 0 / 0
Регистрация: 06.04.2022
Сообщений: 8
07.04.2022, 16:00  [ТС] 11
Боже, спасибо вам огромное!! Сейчас все попробую, постараюсь разобраться сам что к чему.
В этом то и проблема, что я мало что знаю в терминах и тп. Я студент 1 курса, но мы мало что делали по информатике. А здесь дали задание, ничего не объясняя, спрашивал у преподавателя, чтобы он мне объяснил, но тот отказался рассказывать об этом. Никаких учебников и прочего не выдают, а на лекциях больше об опыте своем рассказывают, чем о терминологии да и вообще что к чему, только и остается в интернете искать интересующие вопросы.
0
702 / 440 / 233
Регистрация: 03.01.2017
Сообщений: 1,256
07.04.2022, 16:14 12
Лучший ответ Сообщение было отмечено th_vincenta как решение

Решение

Цитата Сообщение от th_vincenta Посмотреть сообщение
в интернете искать
Вот, почитайте.
0
56 / 39 / 20
Регистрация: 11.06.2021
Сообщений: 154
07.04.2022, 16:25 13
Лучший ответ Сообщение было отмечено th_vincenta как решение

Решение

Форма 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
namespace Тест
{
    public partial class Form1 : Form
    {
        public static string fam;
        public static string imy;
 
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            Application.Exit();
        }
 
        private void button1_Click(object sender, EventArgs e)
        { 
            double  ball =0;
            if (comboBox1.SelectedIndex == 0) ball++;
            if (radioButton5.Checked == true) ball++;
            if (radioButton1.Checked == true) ball++;
            if (listBox1.SelectedIndex == 1) ball++;
            Hide();   
            Form2 frm = new Form2(ball);
            frm.Show();
        }
    }
}

Форма 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
namespace Тест
{
    public partial class Form2 : Form
    {
        public static string fam;
        public static string imy;
        public ball = 0;
        public Form2(double  ball_)
        {
            InitializeComponent();
            ball = ball_;
        }
        private void Form2_FormClosed(object sender, FormClosedEventArgs e)
        {
            Application.Exit();
        }
 
        private void button1_Click(object sender, EventArgs e)
        { 
            if (comboBox1.SelectedIndex == 0) ball++;
            if (radioButton5.Checked == true) ball++;
            if (radioButton1.Checked == true) ball++;
            if (listBox1.SelectedIndex == 1) ball++;
            //дайте передачу управления 3 форме
            Hide();   
            //спрятать 2 форму
            Form3 frm = new Form3(ball);
            frm.Show();
        }
    }
}

Форма 3
Кликните здесь для просмотра всего текста
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
namespace Тест
{
    public partial class Form3 : Form
    {
        public ball = 0;
        public Form3(double  ball_)
           {
               InitializeComponent();
               ball = ball_;
           }
 
        private void button1_Click(object sender, EventArgs e)
        {
            //дайте передачу управления 2 форме
            Hide();
            //спрятать 3 форму
            Form2 frm = new Form2(ball);
            frm.Show();
        }
        
        private void button2_Click(object sender, EventArgs e)
        {
            double ball = 0; 
            if (comboBox1.SelectedIndex == 1) ball++;
            if (radioButton6.Checked == true) ball++;
            if (radioButton1.Checked == true) ball++;
            if (listBox1.SelectedIndex == 1) ball++;
            //дайте передачу управления 4 форме
            Hide();
            //спрятать 3 форму
            Form4 frm = new Form4(ball);
            frm.Show();
        }
    }
}

Форма 4
Кликните здесь для просмотра всего текста
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
namespace Тест
{
    public partial class Form4 : Form
    {
        public ball = 0;
        public Form4(double  ball_)
        {
            InitializeComponent();
            ball = ball_;
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            //дайте передачу управления 3 форме
            Hide();
            //спрятать 4 форму
            Form3 frm = new Form3(ball);
            frm.Show();
        }
 
 
        private void button2_Click(object sender, EventArgs e)
        {
            if (radioButton2.Checked == true) ball++;
            if (comboBox1.SelectedIndex == 2) ball++;
            label1.Text = "ФИО: " + Form1.fam + " " + Form1.imy + "\nВы получили баллов - " + ball.ToString();
        }
    }
}
1
0 / 0 / 0
Регистрация: 06.04.2022
Сообщений: 8
07.04.2022, 16:25  [ТС] 14
iLinks, еще раз вам большое спасибо, что помогли с этим вопросом, все заработало! Несколько дней ломаю голову и спрашиваю знакомых, никто не знает. Со статьей тоже обязательно ознакомлюсь.
0
2806 / 1676 / 884
Регистрация: 14.04.2015
Сообщений: 5,717
07.04.2022, 16:26 15
th_vincenta, я удивлен. каждый студент здесь, на форуме, пишет одно и то же
Цитата Сообщение от th_vincenta Посмотреть сообщение
ничего не объясняя, спрашивал у преподавателя, чтобы он мне объяснил, но тот отказался рассказывать об этом.
не особо понимаю, в чем суть обучения тогда
0
56 / 39 / 20
Регистрация: 11.06.2021
Сообщений: 154
07.04.2022, 16:29 16
Цитата Сообщение от iLinks Посмотреть сообщение
public partial class Form3 : Form
{
private double ball = 0;
public Form3(double ball_)
{
InitializeComponent();
ball+=ball_;
}
private void button1_Click(object sender, EventArgs e)
{
Hide();
Form2 frm = new Form2(ball);
frm.Show();
При переходе с 3 формы на 2ю, и дальше на третью, баллы просуммируются.
Но я думаю, это проблема ТС.
0
0 / 0 / 0
Регистрация: 06.04.2022
Сообщений: 8
07.04.2022, 16:37  [ТС] 17
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
th_vincenta, я удивлен. каждый студент здесь, на форуме, пишет одно и то же

не особо понимаю, в чем суть обучения тогда
К сожалению, все так и происходит, знакомые со 2 и 3 курса говорят то же самое, что им не объясняют, просто дают задание. Также и на других специальностях, не связанных с программированием, например, знакомый на бух учет учится, когда проходят занятия по информатике, приходится все самому или в интернете искать, тк та же проблема. Специалисты хорошие, но самим навыком преподавания не владеют. Не говоря уже о самих студентах
0
702 / 440 / 233
Регистрация: 03.01.2017
Сообщений: 1,256
07.04.2022, 16:54 18
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
в чем суть обучения тогда
У меня +- тоже самое было в универе. Куча ненужных предметов "для общего развития", мало программирования. И мало того, что его мало было, в разных семестрах "изучались" новые ЯП. Мне близкие сказали, что универ учит не учится, а находить связи и самостоятельно искать информацию.
0
07.04.2022, 16:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.04.2022, 16:54
Помогаю со студенческими работами здесь

Обращение к listview из другой формы
Добрый день! Ребят, подскажите пожалуйста, что я делаю не так? Имеется 2 формы: 1 - Склад, в...

Обращение к объекту другой формы
Доброго времени суток! Я не могу обратиться к объекту из другой формы. Код подчеркивается красным,...

Обращение к компоненту другой формы
Здравствуйте. Сразу к делу: имеются три формы "Form1" (на ней располагаются textBox1, textBox2 и...

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

Обращение к toolStripMenuItem из другой формы
Здравствуйте форумчане! Подскажите начинающему как можно реализовать обращение к toolStripMenuItem...

Обращение к combobox из другой формы
Доброго времени суток, вообщем перейду к самой сути вопроса. У меня есть две формы. на первой...


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

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