C# 保存文本框值以备下次运行应用程序时使用

C# 保存文本框值以备下次运行应用程序时使用,c#,forms,textbox,save,C#,Forms,Textbox,Save,我有一个包含30个文本框的表单,其中包含我在代码中设置的默认设置。用户可以选择更改它,但我想知道如何将用户选择的新值保存在一个(或多个)文本框中,以便下次运行应用程序时使用。 非常感谢将值保存到文件中。对于30个文本字段,可以使用30行或逗号分隔的值 当用户更改值时,然后在该文件中写入新值,以便下次启动时,文件中会有新值,并且每次都不必读取旧数据。解决此问题的简单方法: //To write textbox values to file (may be used on form close) u

我有一个包含30个文本框的表单,其中包含我在代码中设置的默认设置。用户可以选择更改它,但我想知道如何将用户选择的新值保存在一个(或多个)文本框中,以便下次运行应用程序时使用。
非常感谢

将值保存到文件中。对于30个文本字段,可以使用30行或逗号分隔的值


当用户更改值时,然后在该文件中写入新值,以便下次启动时,文件中会有新值,并且每次都不必读取旧数据。

解决此问题的简单方法:

//To write textbox values to file (may be used on form close)
using (System.IO.StreamWriter sw = new StreamWriter("values.txt"))
{
    foreach (var control in this.Controls)
    {
        if (control is TextBox)
        {
            TextBox txt = (TextBox)control;
            sw.WriteLine(txt.Name + ":" + txt.Text);
        }
    }
}


//To read textbox values from file (may be used on form load)
using (System.IO.StreamReader sr = new StreamReader("values.txt"))
{
    string line = "";
    while((line=sr.ReadLine()) != null)
    {
        //Ugly, but work in every case
        string control = line.Substring(0, line.IndexOf(':') );
        string val =  line.Substring(line.IndexOf(':') + 1);

        if(this.Controls[control] != null)
        {
            ((TextBox)this.Controls[control]).Text = val;
        }
    }
}

如果您不关心编辑保存的文件,也不打算重命名文本框或更改其布局,则可以将值的顺序留给编译器。使用此选项保存:

// first collect all values
List<string> allvalues = this.Controls.OfType<TextBox>().Select(x => x.Text).ToList();
// write to file
System.IO.File.WriteAllText("yourPath", String.Join(Environment.NewLine, allvalues));
//首先收集所有值
List allvalues=this.Controls.OfType().Select(x=>x.Text.ToList();
//写入文件
System.IO.File.writealText(“yourPath”,String.Join(Environment.NewLine,allvalues));
这是用于装载的:

//load the values:
string [] alllines = System.IO.File.ReadAllLines("yourPath");

List<TextBox> allTextboxes = this.Controls.OfType<TextBox>().ToList();
for (int i = 0; i < allTextboxes.Count; i++)
{
    allTextboxes[i].Text = alllines[i];
}
//加载值:
字符串[]alllines=System.IO.File.ReadAllLines(“您的路径”);
列出所有文本框=this.Controls.OfType().ToList();
对于(int i=0;i
说明:

this.Controls.OfType()
获取windows窗体中作为文本框的所有控件


String.Join(Environment.NewLine,allvalues)
将所有值合并为一个由换行符分隔的字符串。

app.config是一个XML文件,有许多预定义的配置节可用,并支持自定义配置节。下面显示了一个示例,其中我们有一个用于设置Name
mySetting
mySetting2
的标记

<?xml version="1.0"?>
    <configuration>  
     <appSettings>    
    <add key="mySetting" value="myValue1"/>
    <add key="mySetting2" value="myValue12" />  
  </appSettings>
    </configuration>
从配置读取:

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings["mySetting"].Value=textBox1.Text;
config.Save();
 var mySetting = ConfigurationManager.AppSettings["mySetting"];

使用一个配置文件,并保存其上的更改。您可以将其保存在文本文件、xml文件或数据库中。。。。。有没有自己的第一次尝试?有很多方法:存储它们是一个DB、内置配置文件、您自己的xml/json文件……您希望能够手动更改文件中的值吗?我希望能够手动更改文本框值,然后将此更改保存到下次打开应用程序时。非常感谢!我可以问一下如何使用配置文件吗?@MongZhu:回答和解释的格式很好。这个答案可能需要更详细一些。可能是一些代码示例,说明如何将文本保存/加载到文件中/从文件中加载文本以及在何处执行,而不仅仅是一个高级解释;否则,评论中已经提出了这一点。嗯