Итак, я создал форму с браузером на странице «Новости» на сайте моей игры. Он имеет 2 кнопки: «Начать игру» и «Редактор уровней».Запустите форму перед запуском игры XNA
В настоящее время я использую DialogResult
, чтобы проверить, нажата ли какая-либо из этих кнопок. «Начальная игра» имеет DialogResult = Yes
, а «Редактор уровней» - DialogResult = No
. Да, это уродливое решение, но я не смог заставить его работать с Application.Run(newsForm);
, потому что я не знал, как проверять кнопки за пределами класса newsForm
.
Program.cs моего XNA проекта:
[STAThread]
private static void Main()
{
Application.EnableVisualStyles();
using (var newsForm = new NewsForm())
{
if (newsForm.ShowDialog() == DialogResult.Yes)
{
using (var game = new Game1())
{
game.Run();
}
newsForm.Dispose();
}
else if (newsForm.ShowDialog() == DialogResult.No)
{
using (var editor = new EditorForm())
{
Application.Run(editor);
newsForm.Dispose();
}
}
}
}
В моем NewsForm
дизайнере я поставил DialogResult
свойство кнопок соответствующего значения. Но у меня есть еще одна проблема:
Когда я нажимаю «Начать игру», форма XNA отображается правильно, а NewsForm
закрыт. Но когда я нажимаю «Редактор уровней», форма выглядит так, будто закрывается, а затем снова открывается ... Мне нужно снова нажать кнопку, чтобы начать форму editor
. И если я нажму «Начальная игра», он закрывается. Я уверен, что это вызвано DialogResult
.
Как я уже говорил выше, то, как я делаю это, безусловно, не правильный дизайн-мудрым, потому что:
- Это форма, а не диалог
- Кнопка не означает что
DialogResult
или пользователь ожидает, что они имели в виду
Так что если у вас есть какие-либо идеи, как я могу добиться того, что я описал выше, или (предпочтительно) без ShowDialog
, я был бы признателен.
отлично работает. –