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

Смена интерфейса по нажатию кнопки

04.05.2019, 22:31. Показов 7791. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Я только учусь и у меня возникают вопросы, помогите, пожалуйста.
Проблема такая: пишу программу. На первой форме стартовый интерфейс/экран/страница (не знаю, как правильно это называется), в общем, там приветственное сообщение с инструкциями, а так же полем для ввода имени, кнопкой "Добавить" и кнопка "Начать". Вот, мы ввели имя, добавили нужное количество человек, нажимаем "начать". И что дальше? Как сделать так, чтобы по нажатию кнопки "Начать" форма менялась на следующий экран, в котором будет все остальное, типа информация о введенных людях и кнопки, которые будут производить действия с этой информацией?

Попытался реализовать это через добавление второй формы. Возникла другая проблема:
у меня есть класс "Person", который расположен в отдельном от формы и класса "Program" файле. Но первая форма подтягивает все методы и данные из этого класса, а вторая нет. Говорит, что не существует в данном контексте.
Как решить проблему?

Добавлено через 7 минут
Прошу прощения, на счет второго абзаца. Кое-что заметил, сейчас пробую. Возможно решу эту проблему самостоятельно. Вопрос из первого абзаца все еще актуален.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.05.2019, 22:31
Ответы с готовыми решениями:

Смена дизайна по нажатию кнопки
Всем привет. Можно ли как-то сделать так, чтобы по нажатию кнопки менялся дизайн программы: цвет фона, текста, стиль кнопок(от...

Смена картинки в picturebox winforms по нажатию правой/левой кнопки мыши
как реализовать смену картинки по правому или левому/нажатию кнопки мыши? Помогите плиз

Смена картинки по нажатию кнопки
На форме есть кнопка, по нажатию которой должна открываться новая страница с картинкой. Картинка меняется в зависимости от значения...

5
65 / 47 / 26
Регистрация: 25.02.2014
Сообщений: 172
04.05.2019, 23:10
Можно перерисовывать компоненты, на уже существующей форме, использовать какой нибудь UserControl, как вариант. Вариант с другой формой, думаю тут будет лучше.

Цитата Сообщение от Fardar Посмотреть сообщение
Попытался реализовать это через добавление второй формы. Возникла другая проблема:
у меня есть класс "Person", который расположен в отдельном от формы и класса "Program" файле. Но первая форма подтягивает все методы и данные из этого класса, а вторая нет. Говорит, что не существует в данном контексте.
Как решить проблему?
Покажите код, в месте, где ругается
0
 Аватар для aenye
304 / 186 / 45
Регистрация: 05.07.2018
Сообщений: 580
04.05.2019, 23:21
Цитата Сообщение от Fardar Посмотреть сообщение
Как сделать так, чтобы по нажатию кнопки "Начать" форма менялась на следующий экран,
Самый примитивный способ - создавать вторую форму в обработчике клика по кнопке "Начать" и скрывать активную форму.
C#
1
2
3
4
5
6
private void nextBtn_Click(object sender, EventArgs e)
{
    this.Hide();
    NextForm nf = new NextForm();
    nf.Show();
}
Во второй форме определяете ссылку на Ваш источник данных (Класс Person) и вытягиваете из него все, что нужно.

Цитата Сообщение от Fardar Посмотреть сообщение
Возможно решу эту проблему самостоятельно
Цитата Сообщение от Fardar Посмотреть сообщение
Говорит, что не существует в данном контексте. Как решить проблему?
Если не получится - код в студию
1
0 / 0 / 0
Регистрация: 10.01.2019
Сообщений: 28
06.05.2019, 15:17  [ТС]
В общем, с этим я разобрался) Вторая форма открывается и все нормально. Возникла следующая ошибка: в классе первой формы по нажатию на "Добавить", после написания имени, создается экземпляр объекта игрока. и так до 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
int k = 0;
        string isPlayerName = "";
//Кнопка "Добавить"
        private void addPlayer_Click(object sender, EventArgs e)
        {
            k++;
            switch (k)
            {
                case 1 :
                    isPlayerName = playerName.Text;
                    Player player1 = new Player(isPlayerName);
                    players.Text += isPlayerName + "\n";
                    playerName.Clear();
                    break;
                case 2:
                    isPlayerName = playerName.Text;
                    Player player2 = new Player(isPlayerName);
                    players.Text += isPlayerName + "\n";
                    playerName.Clear();
                    break;
                case 3:
                    isPlayerName = playerName.Text;
                    Player player3 = new Player(isPlayerName);
                    players.Text += isPlayerName + "\n";
                    playerName.Clear();
                    break;
                case 4:
                    isPlayerName = playerName.Text;
                    Player player4 = new Player(isPlayerName);
                    players.Text += isPlayerName + "\n";
                    playerName.Clear();
                    break;
                default:
                    warning.Text = "В игре не может участвовать больше четырех игроков!";
                    break;
            }
            
        }
//Кнопка "Начать"
        private void play_Click(object sender, EventArgs e)
        {
            Form2 newForm = new Form2(this);
            newForm.Show();
            newForm.Initializ(player1, player2, player3, player4);
        }
А вот метод из второй формы:
C#
1
2
3
4
5
6
7
public void Initializ(Player player1, Player player2, Player player3, Player player4 )
        {
            namePlay1.Text = player1.name;
            namePlay2.Text = player2.name;
            namePlay3.Text = player3.name;
            namePlay4.Text = player4.name;
        }
Надеюсь, я понятно описал проблему))
0
 Аватар для aenye
304 / 186 / 45
Регистрация: 05.07.2018
Сообщений: 580
06.05.2019, 16:15
Лучший ответ Сообщение было отмечено Fardar как решение

Решение

Fardar,
1-й способ: Создайте список (например, List) для хранения экземпляров объектов игроков. В обработчике события нажатия на кнопку перед созданием формы проверяйте, не пустой ли список.

2-й способ: Можете выставить свойство кнопки Enabled = false по умолчанию. И активировать кнопку только тогда, когда получено нужное кол-во игроков.

P.S. Можете передавать список игроков в конструктор второй формы и уже в нем парсить данные и присваивать значения textBox`ам второй формы, а не создавать для этого отдельный метод.

С Вашими switch-case не разбирался, но там тоже шото страшное происходит) Вы уверены, что нужно использовать именно этот механизм?
1
0 / 0 / 0
Регистрация: 10.01.2019
Сообщений: 28
07.05.2019, 10:51  [ТС]
Спасибо большое) буду пробовать)
Я не могу быть на 100% уверенным, потому как учусь и еще очень многого не знаю)
Но он работает так как надо, просто идеально на первый взгляд. Возможно, есть более подходящие техники, о которых я не знаю. Но пока что switch-case не создал мне никаких проблем и отлично работает)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.05.2019, 10:51
Помогаю со студенческими работами здесь

Смена изображения по нажатию кнопки
Добрый день. Помогите пожалуста новечку. Нужно по нажатию кнопки менять катинку типа отжата картинка погашеного светодиода нажата картинка...

Смена фото по нажатию кнопки
Здравствуйте. Я изучаю програмирование Android не очень давно. Хочу Сделать приложение, которое меняет фото по нажатию кнопки. Как это...

Смена картинок по нажатию кнопки с клавиатуры
Здравствуйте! Хотел бы спросить возможно сделать чтобы при нажатии клавиши на клавиатуре появлялась картинка. Задание надо графически...

Смена картинки по нажатию определенной кнопки
Приветствую уважаемые кодеры! Вопрос в следующем... Нужно сделать так, чтобы по нажатию кнопки, например левой кнопки мыши, в форме...

Смена цвета круга по нажатию кнопки
import java.awt.event.*; import java.awt.*; import javax.swing.*; public class Gitis implements ActionListener{ JFrame...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru