Закрытие нескольких окон, пока одно окно закрыто - PullRequest
1 голос
/ 13 января 2011

У меня есть приложение в форме окна (игра), в котором есть кнопка статистики.Когда пользователь нажимает кнопку статистики, появляется новое окно, где он может видеть свою статистику.

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

Как мне закрыть форму статистики из игровой формы?

Ответы [ 2 ]

3 голосов
/ 13 января 2011

Укажите владельца формы с помощью свойства Form.Owner.В вашем случае это может быть либо главное окно, либо любое другое окно с элементом GUI, который был запущен пользователем для создания нового окна.Новая форма будет закрыта, если ее владелец закрыт.Это отношение является каскадным, поэтому, если вы установите владельца формы B как форму A, то владельцем формы C будет B, C закроется, если вы закроете A ИЛИ B (B также закроется, если вы закроете A).Если B порождает C, но C полезен независимо от B, тогда установите для владельца C значение A (вы можете сделать это через свойство Owner формы B), и C останется открытым, когда B закрыт, но все еще закроется, когда A закроется.

Наконец, если вы откроете «основную» форму программы с помощью Application.Run (Form mainForm), когда окно, указанное в качестве параметра, будет закрыто, приложение полностью закроется.Таким образом, если исполняемый файл порождает A, A порождает B, а B порождает C, когда A закрывается, приложение закрывается, и ВСЕ окна закрываются независимо от владельца.

0 голосов
/ 13 января 2011

почему бы просто не открыть его как dialog, используя ShowDialog(), чтобы вы заставили его закрыть его, прежде чем вернуться к форме параметров?
, и если форма игры является основной, то она должна автоматически закрыть другие оставшиеся формы.иначе вы должны объявить satasForm где-нибудь внутри формы вашей игры и успеть закрыть его, когда пользователь закрывает форму вашей игры

StatsForm  sFrm = new StatsForm  ();
public gameFrm()
{
InitializeComponent();
}

private void btnShowStateForm_Click(object sender, EventArgs e)
{
sFrm.Show(); //or call
//    sFrm.ShowDialog();
}

private void gameFrm_FormClosing(object sender, FormClosingEventArgs e)
{
sFrm.Close();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...