在 Windows 窗体中传递变量

本文关键字:变量 Windows 窗体 | 更新日期: 2023-09-27 18:33:51

>我有一个非常复杂的Windows应用程序,它有8种形式。每个表单上都有"上一个"和"下一个"按钮来回切换,以便轻松编辑表单。

 private void ShowNext()
    {
        if (FormNext == null)
            FormNext = new SomeForm(this);
        FormNext.Show();
        this.Hide();
    }
    private void ShowPrev()
    {
        FormPrev.Show();
        this.Hide();
    }
    private void btnNext_Click(object sender, EventArgs e)
    {
        ShowNext();
    }
    private void btnBack_Click(object sender, EventArgs e)
    {
        ShowPrev();
    }

每个表单将执行不同的sql插入表命令。但问题是我不想在每个表单上完成所有插入。

我想要的是,一旦用户确认正确的输入值,就以最后一个形式完成所有内容。这意味着我必须将所有变量从最开始传递到最后一个。

问题:内存可以容纳所有变量吗?如何通过它们交叉表单?

谢谢。

在 Windows 窗体中传递变量

在主窗体中定义一个静态公共字段,并更新每个子窗体中的值。最后,在最后一个表单中选择要插入的字段

以下几行:

public partial class Form1 : Form //your main fomr
    {
        public static List<MyContainerClass> myContainer= new List<MyContainerClass>();
        .............

在这里,MyContainerClass 可能是代码中定义的某个类,它可以保存您想要保留的所有值。如果它只是一个字符串,那么您可以创建一个字符串列表。然后在每个表单中设置值

Form1.myContainer.Add(new_values);

在最后一个表单中,您可以访问值

foreach(MyContainerClass mc in Form1.myContainer)
{
//Do your work
}

您可以轻松地将字符串查询传递给新/旧表单的公共变量,如下所示

protected void btnNext_Click(object sender, EventArgs e)
{
    MyForm2 x = new MyForm2();
    x.Query = "My Query";   // here "Query" is your custom public string variable on form2
    x.Show()
}

创建一个静态单例类来保存所有变量。

您只需要保留对某些可以访问所需数据的上下文的引用。

protected void btnNext_Click(object sender, EventArgs e)
{
    SomeContext.Push(myFormStateDataThatIsReady);
    ShowNext();
}

然后,当最后一步出现时,您可以将此数据从该上下文中提取并写入该数据。