c# 遍历textbox赋值和写入的问题

就是图片中的功能,将8个textbox中,无论是否有文本值,都存在一个txt或者xml中,程序界面启动,将txt文件内容读取,有个问题,比如1号存了内容,2号为空,3号存了内容。。。读取要对应。。。弄了很久,循环和遍历,总是出错,有没有做过类似的,给个完整代码,谢谢。

第1个回答  2014-03-10

假定你窗体上的textbox的名字分别是textBox1、textBox2至textBox8

string file = Application.StartupPath + @"\value.txt";//记录文件名
List<TextBox> list = null;//用于存放文本框列表
private void button1_Click(object sender, EventArgs e)//保存按钮
{
    List<string> lines = new List<string>();
    list.ForEach(t => lines.Add(t.Text));
    File.WriteAllLines(file, lines);//保存记录
    MessageBox.Show("文件已经保存至" + file);
}
private void Form1_Load(object sender, EventArgs e)//窗体加载时检查记录文件是否存在
{
    //获取窗体所有文本框
    list = this.Controls.OfType<TextBox>().OrderBy(t => t.Name).ToList<TextBox>();
    if (File.Exists(file))//如记录文件存在
    {
        string[] lines = File.ReadAllLines(file);
        int i = 0;
        list.ForEach(t =>
        {
            if (i < lines.Length)
            {
                t.Text = lines[i];
                i++;
            }
        });
    }
}

追问

File.WriteAllLines(file, lines);//保存记
这个在我VS2010编译不通过,提示“最匹配的重载方法具有一些无效参数”,我改成了:File.WriteAllLines(file, lines,System.Text.Encoding.Default);也是提示“最匹配的重载方法具有一些无效参数”,能帮忙排除下吗?或者发下你的小例子,我运行看下,真奇怪了。。。

第2个回答  2014-03-10
这样,你可以做个标记 如果为空 则(假如textbox的值为空 你加,在填充的时候再判断 如果为,就知道是哪些为空了)
你觉得呢?
第3个回答  2014-03-10
给邮箱,我发你DEMO
额。看了下上面同学回答的,读取的时候比较简便的样子。
anyway,如有需要留邮箱吧追问

allable#163.com

谢谢

追答

已发。其实你也可以看看上面的例子,把我的程序简化下什么的,望采纳~

追问

因为生成的xml是根据每个人的ID号来生成的,所以不是固定的文件名的,有什么方法可以判断它,如果不存在就自动生成?

追答

你是需要把每个人的ID号输入到TEXTBOX中,然后没有的,要编一个ID?你把你的需求说详细些。。。这边问不开的话,可以私信我。

本回答被提问者采纳