从文本文件中读取值

时间:2011-09-12 12:40:38

标签: c# .net

我有一个包含参数和值的文件,例如

param1=value1;
param2=value2;
....
paramn=valuen;

这些参数中的每一个都与CheckBox对应,并且每个值都与Checked状态相对应。

StreamReader读取文件后,我应该如何为复选框分配值?

7 个答案:

答案 0 :(得分:2)

尝试创建Dictionary<string, CheckBox>,其中文件中的参数名称对应于复选框。通过这种方式,您可以使用某种linq查询填充复选框:

Dictionary<string, CheckBox> myCheckBoxes = new Dictionary<string, CheckBox>();

string path = @"C:\MyFile.txt";

var query = (from line in File.ReadAllLines(path)
            let values = line.Split('=')
            select new { Key = values[0], Value = Boolean.Parse(values[1]) });

foreach (var kvp in query)
{
    myCheckBoxes[kvp.Key].Checked = kvp.Value;
}

答案 1 :(得分:1)

你可以使用这种方法:

using (StreamReader reader = new StreamReader("file.txt"))
    {
        string line;
        while ((line = reader.ReadLine()) != null)
        {
           string[] lineValues = line.Split('=');

           // here is up to you how to find the control to set and to assign the value.
        }
    }

当然如果你必须解析或做一些映射来确定需要设置哪个控件,我还没有把它包括在内:)

答案 2 :(得分:1)

你可以:

  1. 使用File.ReadAllLines()
  2. 读取文件
  3. 使用line.Split("=")获取名称(索引0)和值(索引1)来解析每一行。
    在这里你可以将true / false(字符串)转换为布尔值
  4. 将每个名称/值放在List<KeyValuePair<string,bool>>中,以便您可以使用适当的方法检索(搜索)密钥(复选框名称)并设置其值。例如,如果您想设置 chk1 值,可以使用lk.Find(item => item.Key == "chk1")).Value
  5. 使用此方法可以使用

    foreach (ComboBox cb in ....)
    {
        cb.Checked = lk.Find(item => item.Key == cb.Name)).Value;
    }
    

答案 3 :(得分:0)

33t 最好的方法是true / false,这样你就可以在读取文件时识别来自int的bool。在你的代码中它并不重要,因为提出这个问题所花费的时间是实现任何可能性的100倍。

答案 4 :(得分:0)

您使用"True"阅读后,检查字符串值,即仅使用文本文件中的StreamReader。如果string.ToLower()等于"true",则只检查所有剩余案例中的复选框,取消选中相应的复选框。

答案 5 :(得分:0)

data.txt中

param1=false;
param2=true;

string[] data = File.ReadAllLines("data.txt");

foreach (string current in data)
{
    string[] currDataArray = current.Trim(';').Split(new[] { "=" }, StringSplitOptions.RemoveEmptyEntries);

    CheckBox chb = new CheckBox();
    chb.Text = currDataArray[0];
    chb.Checked = Convert.ToBoolean(currDataArray[1]);

    this.flowLayoutPanel1.Controls.Add(chb);
}

答案 6 :(得分:0)

也许这会有所帮助:

StreamReader sr = new StreamReader("yourFilePath");
while (!sr.EndOfStream)
{
   string p = sr.ReadLine();
   string []param = p.Split('=', ';');
   CheckBox cb = Controls[param[0]] as CheckBox;
   if(cb != null)
       cb.Checked = Boolean.Parse(param[1]);
}