C# 如何保存对象状态/选择?
我有两张表格。一个是主窗体(form1),另一个(form2)在我按下按钮时被调用 当我按下一个按钮时,form2显示出来,它包含几个复选框和组合框 我的问题是,如何存储或保存复选框状态和组合框选择,以便在关闭form2后在form1中使用它们(检查它们的状态/选择) 以下是一个基本示例:C# 如何保存对象状态/选择?,c#,winforms,C#,Winforms,我有两张表格。一个是主窗体(form1),另一个(form2)在我按下按钮时被调用 当我按下一个按钮时,form2显示出来,它包含几个复选框和组合框 我的问题是,如何存储或保存复选框状态和组合框选择,以便在关闭form2后在form1中使用它们(检查它们的状态/选择) 以下是一个基本示例: Form2: --I click on checkbox and the state changes: checkbox1.Checked = true; Form1: private void bu
Form2:
--I click on checkbox and the state changes:
checkbox1.Checked = true;
Form1:
private void button1_Click(object sender, EventArgs e)
{
if (checkbox1.Checked == true)
{
MessageBox.Show("Checkbox on form2 is checked")
}
}
提前谢谢 在当前代码中,您每次都在创建新的表单实例,例如:
private void OpenForm2
{
//open form2:
Form2 form2 = new Form2();
form2.ShowDialog(this);
//read form2 values:
if (form2.Checkbox1.Checked)
{
MessageBox.Show("Checkbox on form2 is checked")
}
}
相反,使用一个全局实例,每次只显示它,这样可以保留其状态:
Form2 form2 = new Form2();
private void OpenForm2
{
//open form2:
form2.ShowDialog(this);
//read form2 values:
if (form2.Checkbox1.Checked)
{
MessageBox.Show("Checkbox on form2 is checked")
}
}
使用数据绑定和对象传递。下面的示例演示了如何实现这一点,而不必使任何内容处于静态状态。因为如果这样做,这些值将绑定在一起:state.IsChecked=false;这也将取消选中Form2上的复选框 不要只是添加全局变量,这是一个巨大的痛苦等待发生
class Form1: Form
{
private State state = new State();
public Form1()
{
Load += HandleLoad;
}
public HandleLoad(object sender, EventArgs e)
{
label1.DataBindings.Add("Text", state, "IsChecked"); // or just query state.IsChecked
}
public void someEvent_Handler()
{
Form2 form2 = new Form2();
form2.Bind(state);
form2.Show();
}
}
class Form2: Form
{
public void Bind(State state)
{
checkBox1.DataBindings.Add("Checked", state, "IsChecked");
}
}
class State
{
public bool IsChecked {get;set;}
}
只需对Form2使用相同的表单实例,它们就会被保存。关闭一个窗体不会清除它的任何控制值。我该怎么做?请参阅我的答案以获取一些代码。