看起来您想要快速轻松地将文件内容映射到 Windows 窗体控件。
如果是这种情况,那么您应该考虑创建一个代表窗口窗体的各种状态的类 - 文本框内容存在于字符串属性中,复选框作为布尔属性等。
创建该类后,您可以将其实例数据绑定到所有 Windows 窗体控件,这意味着 Windows 窗体数据绑定过程将为您保持 ui 和类同步。
最后一步是保存和加载数据。为此,对 C# 序列化进行一些调查,有很多关于如何将类写入文件表示的教程,您需要做的唯一工作就是对类应用一些属性并从序列化命名空间。
这里有一些非常快速的代码,显示了一个带有单个文本框和三个单选按钮的示例表单的数据绑定。您需要针对您的实际案例进行试验,以正确实现您的支持类 - 单选按钮和单选按钮组可能有点棘手。
我确信代码可以改进,但它只是为了展示方法。
public partial class Form2 : Form
{
private BindingClass backingClass;
public Form2()
{
InitializeComponent();
backingClass = new BindingClass();
backingClass.Name = "Hippo";
backingClass.One = true;
textBox1.DataBindings.Add("Text", backingClass, "Name");
radioButton1.DataBindings.Add("Checked", backingClass, "One");
radioButton2.DataBindings.Add("Checked", backingClass, "Two");
radioButton3.DataBindings.Add("Checked", backingClass, "Three");
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(backingClass.Name);
if (backingClass.One)
{
MessageBox.Show("One");
}
if (backingClass.Two)
{
MessageBox.Show("Two");
}
if (backingClass.Three)
{
MessageBox.Show("Three");
}
}
}
public class BindingClass
{
private bool one;
private bool two;
private bool three;
public string Name { get; set; }
public bool One {
get { return one;}
set
{
one = value;
two = !value;
three = !value;
}
}
public bool Two
{
get { return two; }
set
{
two = value;
one = !value;
three = !value;
}
}
public bool Three
{
get { return three; }
set
{
three = value;
one = !value;
two = !value;
}
}
}
我在上面创建了我的 BindingClass 的实例,如果它存在,您将改为从文件中反序列化该类。
这种方法在某种程度上导致了一种 MVVM 方法,其中类用于支持绑定,就像视图模型一样 - 我建议您进入这种心态,因为您不希望绑定类开始包含逻辑。它只是为了给你一些可以绑定的东西和一些可以序列化的东西来代表你的表单——你应该有其他包含你实际模型的对象的逻辑。
我不会展示序列化的代码——网上有很多例子。这是 MSDN 文章的链接,这将是一个很好的第一步:http://msdn.microsoft.com/en-us/library/ms950721.aspx