/// <summary> /// Открыть файл и добавить его в таблицу /// </summary> /// <param name="grid">Таблица</param> /// <param name="path">Путь к файлу</param> /// <param name="type"> /// <list type="table"> /// <listheader>Тип таблицы:</listheader> /// <item>false - средний взвешенный балл</item> /// <item>true - средний балл</item> /// </list> /// </param> public void OpenFile(DataGridView grid, string path, bool type) { string json; StructFile table = null; json = File.ReadAllText(path); try { table = JsonConvert.DeserializeObject <StructFile>(json); } catch { MessageBox.Show("Таблица не была загружена.\nПроверьте целостность файла.", "Ошибка чтения файла", MessageBoxButtons.OK, MessageBoxIcon.Error); } if (table != null) { if (table.typeGrid != type) { MessageBox.Show("Не совпадают настройки типа вычисления баллов!\rПоменяйте в вкладке тип на средний балл/средний взвешенный бал.", "Ошибка несовместимости", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { MarksTable drawTable; if (!type) { drawTable = new MarksTableAverageMass { marks = grid }; drawTable.marks.Rows.Clear(); drawTable.marks.Columns.Clear(); drawTable.DrawGrid((table.columnCount - 2) / 2, table.nameLess); } else { drawTable = new MarksTableAverage { marks = grid }; drawTable.marks.Rows.Clear(); drawTable.marks.Columns.Clear(); drawTable.DrawGrid(table.columnCount - 2, table.nameLess); } int posRow = 0, posColumn = 1; for (int i = 0; i < table.marks.Count; i++) { for (int j = 0; j < table.marks[i].Count; j++) { drawTable.marks[posColumn, posRow].Value = table.marks[i][j]; posColumn++; } posRow++; posColumn = 1; } } } }
/// <summary> /// Открыть файл и добавить его в таблицу /// </summary> /// <param name="grid">Таблица</param> /// <param name="startEdit">Начат редактироваться таблица</param> /// <param name="fileOpen">Открыт файл</param> /// <param name="type"> /// <list type="table"> /// <listheader>Тип таблицы:</listheader> /// <item>false - средний взвешенный балл</item> /// <item>true - средний балл</item> /// </list> /// </param> public void OpenFile(DataGridView grid, bool startEdit, bool fileOpen, bool type) { if (startEdit) { DialogResult result = MessageBox.Show("Сохранить таблицу перед открытием файла?", "Сохранить?", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { SaveFile(grid, startEdit, type, ""); } } using OpenFileDialog loadFileDialog = new OpenFileDialog { Filter = "dnv Файл (*.dnv)|*.dnv|txt Файл (*.txt)|*.txt", RestoreDirectory = true }; string json; StructFile table = null; if (loadFileDialog.ShowDialog() == DialogResult.OK) { string fname = loadFileDialog.FileName; //directory = loadFileDialog.FileName; json = File.ReadAllText(fname); try { table = JsonConvert.DeserializeObject <StructFile>(json); fileOpen = true; } catch { MessageBox.Show("Таблица не была загружена.\nПроверьте целостность файла.", "Ошибка чтения файла", MessageBoxButtons.OK, MessageBoxIcon.Error); } } if (table != null) { if (table.typeGrid != type) { MessageBox.Show("Не совпадают настройки типа вычисления баллов!\rПоменяйте в вкладке тип на средний балл/средний взвешенный бал.", "Ошибка несовместимости", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { MarksTable drawTable; if (!type) { drawTable = new MarksTableAverageMass { marks = grid }; drawTable.marks.Rows.Clear(); drawTable.marks.Columns.Clear(); drawTable.DrawGrid((table.columnCount - 2) / 2, table.nameLess); } else { drawTable = new MarksTableAverage { marks = grid }; drawTable.marks.Rows.Clear(); drawTable.marks.Columns.Clear(); drawTable.DrawGrid(table.columnCount - 2, table.nameLess); } int posRow = 0, posColumn = 1; for (int i = 0; i < table.marks.Count; i++) { for (int j = 0; j < table.marks[i].Count; j++) { drawTable.marks[posColumn, posRow].Value = table.marks[i][j]; posColumn++; } posRow++; posColumn = 1; } } } }