在表单之间发送变量

时间:2015-05-10 19:01:26

标签: c# forms

我正在制作游戏,我使用了3种主要形式,一种是开始菜单,一种是主游戏形式,另一种是创建地图形式。我的问题是如何在它们之间发送变量。我知道经典的表单设置,你从另一个表单中显示一个表单,并传递这样的信息......

 Form1 form = new Form1();
 form.Show();
 form.varible = ...

但我不喜欢上一个表格仍然显示的方式,form.ShowDialog也不是我想要的。我有一个系统,你循环通过表单,它打开你的新表单并关闭旧表单,它工作得很好,除了我不知道如何将信息发送到新表单。我将Program.cs代码改为看起来像这样

    public static bool OpenForm1OnClose { get; set; }
    public static bool OpenForm2OnClose { get; set; }
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        OpenForm1OnClose = true;
        OpenForm2OnClose = false;
        while (OpenForm1OnClose || OpenForm2OnClose)
        {
            if(OpenForm1OnClose) 
                Application.Run(new Form1());
            if (OpenForm2OnClose)
                Application.Run(new Form2());
        }

    }

这只是一个测试程序,它现在可以在两个表单之间切换 - 单击一个按钮,然后转到另一个表单并关闭您所在的表单。这是按钮点击代码的样子

 private void button1_Click(object sender, EventArgs e) // form1's button
    {
        Program.OpenForm2OnClose = true;
        this.Close();
    }

那就是那里的所有代码,真的没有更多。关于如何传递变量的任何想法都会很棒,或者如果它直接不可能,那么在表单之间切换的好方法建议会有所帮助。感谢您的阅读

1 个答案:

答案 0 :(得分:0)

如果你问我的想法,答案很简单。您只需要让构造函数将信息作为其args。

private var myInfo;

public Form1(var myInfo_)
{
    InitializeComponent();
    myInfo = myInfo_;
}

我希望这实际上是你想要的。