使用C#win表单加载XML文件

时间:2016-07-18 09:14:43

标签: c# xml winforms

在我的程序中,用户可以使用按钮保存设置。这家商店有效。加载设置不正常。我在加载规则时遇到问题。我有几个规则列表。我不知道如何指定索引。请有人帮帮我吗?

保存/加载设置的方法:

row1$V5

我的英语不太好,我希望这是可以理解的。

2 个答案:

答案 0 :(得分:2)

假设userConfig.Rule是您要在SelectRulesComboBox中选择的规则的名称,并且规则的每个实例都有一个名为Name的属性,您需要查找的索引是userConfig.Rule集合中的_rules

如果_rulesList<T>,那么您可以使用FindIndex方法:

SelectedRulesCombobox.SelectedIndex = _rules.FindIndex(r => r.Name == userConfig.Rule);

否则,您可以在_rules集合中将每个规则与其索引一起投影,并获得第一个具有Name == userConfig.Rule的规则:

SelectedRulesCombobox.SelectedIndex = _rules.Select((rule, index) => new
{
    Rule = rule,
    Index = index
})
.First(x => x.Rule.Name == userConfig.Rule)
.Index;

请注意,如果找不到Name == userConfig.Rule的规则,上面的代码会抛出异常。

答案 1 :(得分:0)

为什么不使用数据表&amp; WriteXml和ReadXml?

void writeResults()
{
    DataTable dt = new DataTable();
    dt.Columns.Add("configID");
    dt.Columns.Add("configValue");

    //Other code you want to add

    //Then add row for each setting
    Datarow r  = dt.NewRow();
    r["configID"]= "Speed"; //e.g. Speed  
    r["configValue"]=_timer.Interval.ToString();  
    dt.Rows.Add(r);
    // snip

    //then save datatable to file
    dt.TableName="UserConfigs";
    dt.WriteXml(@"filename_goes_here");
}

从文件中读取设置更加容易:

void readSettings()
{
    DataTable dt = new DataTable();
    dt.ReadXml(@"filename_goes_here");

    for(int i = 0; i < dt.Rows.Count; i++)
    {
        switch(dt.Rows[i][0])
        {
            case "Speed":
                try
                {
                    _timer.Interval=Int32.Parse(dr.Rows[i][1]);
                }
                catch
                {
                    // we've got a problem !
                }

                break;
            default:break;
        }
    }
}

编辑:这不是最佳方式,但可以帮助您入门。 Nuff说,总是尝试/捕获你从xml验证数据的每个块 - 永远不要相信用户输入。