【发布时间】:2017-02-20 17:16:10
【问题描述】:
因此,我创建了一个带有浏览器的表单,用于访问我游戏网站上的“新闻”页面。它有 2 个按钮:“开始游戏”和“关卡编辑器”。
我目前正在使用DialogResult 来检查是否点击了这些按钮中的任何一个 - “开始游戏”有DialogResult = Yes,而“关卡编辑器”有DialogResult = No。是的,这是一个丑陋的解决方案,但我无法使其与 Application.Run(newsForm); 一起使用,因为我不知道如何检查 newsForm 类之外的按钮点击。
我的 XNA 项目的 Program.cs:
[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,我将不胜感激。
【问题讨论】: