我有一个非常复杂的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 insert table命令。但问题是我不希望在每个表单上完成所有插入。
我想要的是在用户确认输入值正确后,在最后一个表单中完成所有操作。 这意味着我必须将所有变量从最开始传递到最后一个。
问题:内存可以保存所有变量吗?如何将它们交叉传递?
感谢。
答案 0 :(得分:1)
在主窗体中定义静态公共字段,并更新每个子窗体中的值。最后选择最后一个表单中的字段进行插入
以下几行:
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
}
答案 1 :(得分:1)
您可以轻松地将字符串查询传递给新/旧表单的公共变量,如下所示
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()
}
答案 2 :(得分:0)
创建一个静态单例类,它将保存所有变量。
答案 3 :(得分:0)
您只需要拥有一些可以访问所需数据的上下文的引用。
protected void btnNext_Click(object sender, EventArgs e)
{
SomeContext.Push(myFormStateDataThatIsReady);
ShowNext();
}
然后,当最后一步到来时,您可以从该上下文中提取此数据并写入该数据。