Also habe ich ein Formular mit einem Browser auf der "News" -Seite auf meiner Spieleseite erstellt. Es hat 2 Tasten: "Start Game" und "Level Editor".Starten Sie ein Formular, bevor Sie ein XNA-Spiel starten
ich derzeit DialogResult
zu überprüfen, ob eine dieser Tasten bin mit geklickt wurde - „Spiel starten“ hat DialogResult = Yes
und „Level Editor“ hat DialogResult = No
. Ja, das ist eine hässliche Lösung, aber ich konnte es nicht mit Application.Run(newsForm);
arbeiten lassen, weil ich nicht wusste, wie man auf Knopfklicks außerhalb der newsForm
Klasse prüft.
Program.cs meiner XNA-Projekt:
[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();
}
}
}
}
In meinem NewsForm
Designer stelle ich die DialogResult
Eigentum der Tasten auf den entsprechenden Wert. Aber ich habe ein anderes Problem:
Wenn ich auf "Start Game" klicke, wird das XNA-Formular ordnungsgemäß angezeigt und NewsForm
ist geschlossen. Aber wenn ich auf "Level Editor" klicke, sieht das Formular so aus, als ob es sich schließt und dann wieder öffnet ... Ich muss den Knopf erneut klicken, um das editor
Formular zu starten. Und wenn ich auf "Spiel starten" klicke, wird es geschlossen. Ich bin sicher, dass das durch die DialogResult
verursacht wird.
Wie ich oben gesagt, die Art, wie ich es zu tun habe, ist definitiv nicht das richtige Design-weise, weil:
- Es ist eine Form ist, kein Dialog
- Die Tasten bedeuten nicht, was die
DialogResult
oder der Benutzer erwartet, dass sie
So bedeuten, wenn Sie eine Idee, wie ich erreichen kann, was ich oben beschrieben, mit oder (vorzugsweise) ohne ShowDialog
, würde ich dankbar sein.
funktioniert perfekt. –