// Выводит на форму вторую матрицу, состоящую из объектов TextBox. void displaySecondMatrix() { // Координаты, задающие начальное положение ячеек // второй матрицы при её создании pointX = matTwoView_lbl.Location.X; pointY = matTwoView_lbl.Location.Y + 30; // Количество рядов и столбцов матрицы // устанавливается из значений полей NumericUpDown matrix2 = new Matrix((int)mat_two_rows.Value, (int)mat_two_cols.Value); secondMatrix = new MatrixView(matrix2); // Добавляет на форму элемент textBox объекта secondMatrix // для всех рядов и столбцов матрицы matrix2 for (int i = 0; i < matrix2.Rows; i++) { for (int j = 0; j < matrix2.Columns; j++) { secondMatrix[i, j].Location = new Point(pointX, pointY); Controls.Add(secondMatrix[i, j]); pointX += 50; } pointX = matTwoView_lbl.Location.X; pointY += 20; } matTwoView_lbl.Text = matTwoLabel; }
// Удаляет представление матриц из формы ActForMatrix. // Удаляет объекты класса Matrix из памяти. void matrixDeletion(Matrix mat, MatrixView matView) { if (mat != null) { for (int i = 0; i < mat.Rows; i++) { for (int j = 0; j < mat.Columns; j++) { Controls.Remove(matView[i, j]); matView[i, j].Dispose(); } } mat = null; } }
/* Определяет значения для указанной матрицы mat * из значений TextBox указанной визуальной матрицы matView. * Прерывает выполнение метода при некорретном значении * поля matLabel, меняя фоновый цвет этого поля. */ void matrixParsing(Matrix mat, MatrixView matView, Label matLabel, string initialLabel) { for (int i = 0; i < mat.Rows; i++) { for (int j = 0; j < mat.Columns; j++) { // Если значение ячейки представления матрицы пустое, // то этой ячейке присваевается значение 0 (нуль) if (matView[i, j].Text == string.Empty) { mat[i, j] = 0; matView[i, j].Text = "0"; } else { try { mat[i, j] = Int32.Parse(matView[i, j].Text); matView[i, j].BackColor = Color.White; } // Вызывает исключение FormatException при попытке // извлечь некорректное числовое значение catch (FormatException) { matView[i, j].BackColor = Color.Yellow; inputChecker = false; matLabel.Text = checkTheData; return; } } } } matLabel.Text = initialLabel; inputChecker = true; }
// Выводит на форму матрицу-результат, состоящую из объектов TextBox. void displayResultMatrix() { if (resultMatrix == null) { // Координаты, задающие начальное положение ячеек // результирующей матрицы при её создании pointX = mat_two_col_lbl.Location.X; pointY = mat_two_col_lbl.Location.Y + 215; resultMatrix = new MatrixView(matrix3); // Добавляет на форму элемент textBox объекта resultMatrix // для всех рядов и столбцов матрицы matrix3 for (int i = 0; i < matrix3.Rows; i++) { for (int j = 0; j < matrix3.Columns; j++) { resultMatrix[i, j].Text = matrix3[i, j].ToString(); resultMatrix[i, j].Location = new Point(pointX, pointY); Controls.Add(resultMatrix[i, j]); pointX += 50; } pointX = mat_two_col_lbl.Location.X; pointY += 20; } } else { for (int i = 0; i < matrix3.Rows; i++) { for (int j = 0; j < matrix3.Columns; j++) { resultMatrix[i, j].Text = matrix3[i, j].ToString(); } } } matResultView_lbl.Text = matResultLabel; }