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

Как сделать вторую форму владельцем первой?

18.11.2018, 11:55. Показов 915. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть две формы - mainmenu и game. mainmenu открывает game, а сама закрывается. Как это реализовать? При использовании
C#
1
2
Game.show();
This.Close();
закрывается вся программа. Как я понял - mainmenu родитель game и при его закрытии закрывается и game. Но как поменять родителя?

P.S.
Пробовал через Owner, но ничего не получилось. Это было примерно так:
В mainmenu:
C#
1
2
3
Game game = new Game;
this.Owner = game;
game.Show();
и в game:
C#
1
2
MainMenu mainmenu = new MainMenu;
mainmenu.Close();
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2018, 11:55
Ответы с готовыми решениями:

Как из первой формы открыть вторую форму, внутри первой?
как из первой формы открыть вторую форму, внутри первой?

Как вызвать вторую форму с первой
Нужно реализовать всплывающее окно, создал новую Form2, нарисовал все что нужно. А как ее открыть...

Как закрыть вторую форму из первой?
Как закрыть вторую форму из первой? создал: Vnesti Vnes = new Vnesti(); ...

Как показать вторую форму из первой
Подскажите пожалуйста, что нужно чтобы банально вызвать форму из другой формы? Из кода в этой теме...

3
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
18.11.2018, 12:32 2
Цитата Сообщение от CapsLockkk Посмотреть сообщение
Как я понял - mainmenu родитель game
Неправильно понял. Не нужно никаких владельцев. Открой файл Program.cs. Там, скорее всего, есть строчка Application.Run(new MainMenu()) или как-то так. Она запускает цикл сообщений и показывает форму, при закрытии которой закроется и приложение. Так вот, показать форму можно иначе:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    while (true)
    {
        var mm = new MainMenu();
        Application.Run(mm);
        if (mm.DialogResult == DialogResult.Cancel)
        {
            break;
        }
        Application.Run(new Game());
    }
}
Пока в форме MainMenu не зададут DialogResult == Cancel приложение будет продолжать работу. См. пример
Вложения
Тип файла: zip WindowsFormsApp2.zip (10.7 Кб, 0 просмотров)
0
0 / 0 / 0
Регистрация: 17.11.2018
Сообщений: 18
18.11.2018, 19:31  [ТС] 3
Оу! После вставки твоего кода теперь не возможно закрыть программу. При попытке закрытия просто открывается заново. Всё из-за твоего бесконечного цикла. Чем можно его заменить?

Добавлено через 4 минуты
Всё, нашел решение:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            bool i = true;
            while (i)
            {
                MainMenu mainmenu = new MainMenu();
                Application.Run(mainmenu);
                if (mainmenu.DialogResult == DialogResult.Cancel)
                {
                    break;
                }
                i = false;
                Application.Run(new Game());
            }
Это немного громоздко, но всё работает. Вроде можно заменить трюк с переменной i на что-то другое, но я не помню, что именно, если вспомню - напишу (вдруг кому понадобится)
Ну а так, спасибо тебе, ViterAlex!
0
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
18.11.2018, 19:33 4
Цитата Сообщение от CapsLockkk Посмотреть сообщение
Всё из-за твоего бесконечного цикла
Ну так если нужно закрыть программу, то у главной формы нужно задать DialogResult = Cancel и всё закроется. Я же написал.
0
18.11.2018, 19:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2018, 19:33
Помогаю со студенческими работами здесь

Как перевести фокус с первой формы на вторую форму приложения?
Здраствуйте, подскажите пожалуйста, как заставить фокус перейти с первой формы на вторую форму...

Как нажатием кнопки на первой форме открыть для работы вторую форму?
C# Windows Forms как нажатием кнопки на 1 ой форме открыть для работы 2ою форму?т.е к примеру...

Закрыть вторую форму из первой
Уважаемые форумчане! Подскажите как решить проблему. У меня две формы Form1 и Form2. На первой...

Как сделать вторую форму программы видимой
У программы есть основная форма и несколько вторичных(окошко о программе,настройки и т.д.) окошко о...


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

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