public bool LoadFile(string path) { //参数列表 List <QCharacteristic> ps = new List <QCharacteristic>(); // 文件读取部分,完成了以下几件事: // 1、读取每行,生成每行的QLineInfo对象 // 2、先交给对应的参数处理,如果处理失败,再交给QFile处理 // 3、如果不是QlineInfo对象,那么交给QFile的Data List <string> strs = GetLines(path); int partid = 0; QPart part = new QPart(); foreach (string str in strs) { try { //如果是K开头,那么就是定义,如果是‘/’那么就是注释,取消,否则就是数据。 if (str[0] == 'K' || str[0] == 'k') { QLineInfo line = new QLineInfo(str); //如果是零配件信息,交由QF处理。"K1001 jet2013" if (str[1] == '1') { partid = line.pid > 0 ? line.pid - 1 : 0; if (partid + 1 > parts.Count) { QPart pt = new QPart(); pt.partid = line.pid; parts.Add(pt); } parts[partid].DealLine(line); } //否则是参数信息,交由参数层处理 else if (str[1] == '2') { if (line.pid > ps.Count) { for (int j = ps.Count; j < line.pid; j++) { QCharacteristic p = new QCharacteristic(); p.partId = partid + 1; p.id = j + 1; ps.Add(p); parts[partid].pramters.Add(p); } } ps[line.pid - 1].DealLine(line); } } //如果是/,那么就是注释,忽略。 else if (str[0] == '/') { } else { this.data.Add(new QData(str)); } } catch { } } //取出生成的参数,添加至QFile中 for (int i = 0; i < ps.Count; i++) { if (ps[i].id > 0) { this.pramters.Add(ps[i]); } } //此处将QFile中的Data中的DataItem与 //每个QPramater的QDataItem数据组一一对应。 for (int i = 0; i < this.data.Count; i++) { for (int j = 0; j < this.data[i].items.Count; j++) { this.pramters[j].data.Add(this.data[i].items[j]); } } return(true); }