我有一个包含参数和值的文件,例如
param1=value1;
param2=value2;
....
paramn=valuen;
这些参数中的每一个都与CheckBox
对应,并且每个值都与Checked
状态相对应。
用StreamReader
读取文件后,我应该如何为复选框分配值?
答案 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)
你可以:
File.ReadAllLines()
line.Split("=")
获取名称(索引0)和值(索引1)来解析每一行。 List<KeyValuePair<string,bool>>
中,以便您可以使用适当的方法检索(搜索)密钥(复选框名称)并设置其值。例如,如果您想设置 chk1 值,可以使用lk.Find(item => item.Key == "chk1")).Value
使用此方法可以使用
foreach (ComboBox cb in ....)
{
cb.Checked = lk.Find(item => item.Key == cb.Name)).Value;
}
答案 3 :(得分:0)
答案 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]);
}