【问题标题】:How do you use Form.ShowDialog(); correctly with program.cs?你如何使用 Form.ShowDialog();正确使用program.cs?
【发布时间】:2015-07-21 17:02:22
【问题描述】:

我正在尝试让一个 winform 打开一个 Xna 表单。在网上查找我发现的最好方法是首先通过 program.cs 打开表单,然后放置一个 if 语句来检查您是否点击了 winform 上的开始按钮,该按钮将给出 DialogResult.OK 。我知道我需要使用 ShowDialog 启动表单,但是我用我当前的代码得到了两个表单。它打开一个,我关闭它,它打开另一个 winform,当你关闭它时,你会得到 Xna 表单。有什么建议么? 这是我的代码:

     static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    static void Main(string[] args)
    {
      using(Form1 form = new Form1())
      {
          form.ShowDialog();
          if(form.ShowDialog() == DialogResult.OK)
          {
              using (Game1 game = new Game1())
              {
                  game.Run();
              }

          }

          }
      }
    }

这是我的按钮代码:

           private void button1_Click(object sender, EventArgs e)
    {
        compotents comps = new compotents();
      comps.mass =   textBox1.Text;
      comps.velocity = textBox2.Text;
      comps.gravity = textBox3.Text;

      button1.DialogResult = DialogResult.OK;

      this.Close();
    }

(compotents 是我用来存储变量并以 xna 形式使用它们的类)

【问题讨论】:

    标签: c# winforms xna xna-4.0


    【解决方案1】:

    表单显示两次,因为您调用了两次ShowDialog,但没有对第一次调用的结果做任何事情。改为:

      using(Form1 form = new Form1())
      {
          if(form.ShowDialog() == DialogResult.OK)
          {
              using (Game1 game = new Game1())
              {
                  game.Run();
              }
          }
      }
    

    【讨论】:

    • 我在没有第一个 form.ShowDialog 的情况下运行它,但是在没有它的情况下点击开始按钮后整个事情都关闭了......
    • game.Run 会产生线程还是什么?您是否尝试在调试器中运行它以查看问题是否变得明显?
    • 当我在调试器中运行它时,它似乎没有明显的问题。没有弹出标志或异常,我按下按钮,整个调试器关闭,就好像我关闭了应用程序一样。 game.Run 应该只打开一个 Xna 表单。不过我是 Xna 的新手,所以可能是那个 game.Run 只调用代码来启动。我不确定。如果我两次调用 ShowDialog 时它起作用,我看不出会出现什么问题。
    猜你喜欢
    • 2012-09-08
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 2013-10-20
    相关资源
    最近更新 更多