private List<Parsing> OpenFile(string filename) { FilterWindow fw = new FilterWindow(filename, "done"); fw.ShowDialog(); if (fw.DialogResult != true) { return null; // пустой список } filter = fw.filter; doneXML = loadDoneXML(fw.filter.DoneDir); //showFilter(fw.filter, doneXML); // читаем весь файл за раз и помещаем в массив строк source = File.ReadAllLines(filename); // немного почистим список lines = checkLines(); int n = 0; // пропускаем начало файла до значений while (lines[n].StartsWith("=") == false) { n++; } // обработка данных while (n != -1) { n = getNextItem(n); } current = list[0]; return list; }
private void menuOpen_Click(object sender, RoutedEventArgs e) { // сначала обновим справочники updateSprav(); // потом загрузим сами данные if (!loadParsing()) { MessageBox.Show("ошибка загрузки файла парсинга"); return; } //MessageBox.Show("файл парсинга успешно загружен"); spisokWindow sw = new spisokWindow(list, filter, doneXML); sw.ShowDialog(); leftPanel.spisok = getIncluded(list); // выбираем только отмеченых leftPanel.showParsing(0); leftPanel.ItemChanged += leftPanel_ItemChanged; if ((leftPanel.spisok == null) || (leftPanel.spisok.Count == 0)) { lbStatus.Text = "нет записей для обработки"; return; } Parsing prs = leftPanel.spisok[0]; lbRki.Content = string.Format("РКИ № {0} ({1})", prs.Nomer, prs.Data); lbStatus.Text = string.Format("запись {0} из {1}", 1, leftPanel.spisok.Count); current = prs; }
void leftPanel_ItemChanged(object sender, RkiEventArgs e) { Parsing prs = e.Item; lbRki.Content = string.Format("РКИ № {0} ({1})", prs.Nomer, prs.Data); lbStatus.Text = string.Format("запись {0} из {1}", e.Current + 1, leftPanel.spisok.Count); currentNumber = e.Current; current = prs; }
// признаком окончания данных является -1 private int getNextItem(int startPos) { int n = startPos; string preparat; string nomer; string data; string protokol; string producer; string pacient; string address; string forma = ""; string duration; List<string> bases = new List<string>(); Parsing prs = new Parsing(); n++; string ss = lines[n]; preparat = lines[n].Substring(27); // препарат n++; producer = lines[n].Substring(27); // фирма-производитель n++; nomer = lines[n].Substring(27); // номер исследования n++; data = lines[n].Substring(27); // дата исследование n++; protokol = lines[n].Substring(27); // протокол protokol = protokol.Trim().Replace("\"", ""); n++; pacient = lines[n].Substring(27); n++; address = lines[n].Substring(27); n++; duration = lines[n].Substring(27); n++; // обработка баз while (lines[n].StartsWith("=") == false) { if (lines[n].Substring(12, 5) == "форма") { forma = lines[n].Substring(21); } else { bases.Add(lines[n].Substring(21)); } n++; if (n == lines.Count) { n = -1; // конец обработки break; } } prs.Included = true; prs.Nomer = nomer; prs.Data = data; prs.Preparat = preparat; prs.Producer = producer; prs.Protokol = protokol; prs.Pacient = pacient; prs.Address = address; prs.Duration = duration; prs.Forma = forma; prs.Bases = bases; list.Add(prs); return n; }
public RkiEventArgs(Parsing parsing, int current) { this.parsing = parsing; this.current = current; }
private void btPrev_Click(object sender, RoutedEventArgs e) { //пред запись if (current > 0) { current--; Item = spisok[current]; showParsing(current); } }
private void btNext_Click(object sender, RoutedEventArgs e) { //след запись current++; if (current < spisok.Count()) { Item = spisok[current]; showParsing(current); } else { MessageBox.Show("записей больше нет"); } }