Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# UserControl:保存值/首选项的最佳方法_C#_Winforms_User Controls - Fatal编程技术网

C# UserControl:保存值/首选项的最佳方法

C# UserControl:保存值/首选项的最佳方法,c#,winforms,user-controls,C#,Winforms,User Controls,我已经创建了一个UserControl,它基本上是一个面板,带有各种控件,用于设置用户偏好和值,例如年龄、身高、男性/女性、文本框、单选按钮、复选框等。。。它用于主要的WinForm应用程序。我正在寻找保存用户选择的最佳或最简单的方法,以便在下一次应用程序加载时保留这些选择 如果控件在主WinForm上,我会使用Properties.Settings方法,但是有很多控件,我不想这样做。我还考虑过创建保存/加载方法和使用XML序列化,但这需要创建和更新约40个属性。我可以使用XML方法,但我想我会

我已经创建了一个UserControl,它基本上是一个面板,带有各种控件,用于设置用户偏好和值,例如年龄、身高、男性/女性、文本框、单选按钮、复选框等。。。它用于主要的WinForm应用程序。我正在寻找保存用户选择的最佳或最简单的方法,以便在下一次应用程序加载时保留这些选择

如果控件在主WinForm上,我会使用Properties.Settings方法,但是有很多控件,我不想这样做。我还考虑过创建保存/加载方法和使用XML序列化,但这需要创建和更新约40个属性。我可以使用XML方法,但我想我会让你们这些好朋友看看是否有一个我不知道的更简单的方法


谢谢

我认为序列化和数据绑定相结合是一种方法,只需创建一个包含所有要保存的设置的类,将它们绑定到控件,在退出表单时序列化并保存它们,并在加载表单时加载它们:

_settings = new Settings()
{
    Name = "Name",
    Name1 = "Name1",
    Name2 = "Name2"
};
textBox1.DataBindings.Add("Text", _settings, "Name");
textBox2.DataBindings.Add("Text", _settings, "Name1");
textBox3.DataBindings.Add("Text", _settings, "Name2");
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
   XmlSerializer ser = new XmlSerializer(typeof(Settings));
   using (Stream stream = File.OpenWrite("settings.xml"))
   {
       ser.Serialize(stream, _settings);
   }
}

设置和XML类型序列化正是为此而定制的。为什么人们总是想绕过简单的选择?另一种选择是保存到数据库,但这需要更多的努力。它真的没有比Properties.Settings更简单的了。@GlenThomas因此我问了这个问题。我对这两种方法都很熟悉,过去也曾使用过它们来保存较小的首选项集,但我想问问是否还有其他方法,例如Properties.Settings之类的方法,但对于我不知道的UserControls,我会尝试一下。谢谢。看起来不错。