Вот еще пример, но он с графикой  FrameWork 4.0 Код Form1.cs
| Код | //------------------------------------------------------------------------------------------------------------------------------// //--Программа для работы с матрицей размерностью m*n, содержащей целочисленные значения типа int.-------------------------------// //--Вычислить столбец начиная со второго, который имеет только положительные элементы. Если таковой существует,-----------------// //--поменять местами с первым столбцом.-----------------------------------------------------------------------------------------// //--ПРИМЕЧАНИЕ: В данном алгоритме для хранения матрицы используется отдельная переменная - двумерный массив,-------------------// //--но можно обойтись без нее, и брать значения из ячеек DataGridView.----------------------------------------------------------// //--Все равно в любом случае необходима проверка типа данных содержания ячеек---------------------------------------------------// //------------------------------------------------------------------------------------------------------------------------------// public partial class Form1 : Form { private int[,] matrix2D; public Form1() { InitializeComponent(); }
private void MatrixInitialize() { try { if (matrix2D == null) matrix2D = new int[(int)numericUpDown1.Value, (int)numericUpDown2.Value]; else { matrix2D.Initialize(); matrix2D = null; matrix2D = new int[(int)numericUpDown1.Value, (int)numericUpDown2.Value]; }
dataGridView1.Columns.Clear(); dataGridView1.Rows.Clear();
for (int i = 0; i < numericUpDown1.Value; ++i) { dataGridView1.Columns.Add("Column" + (i + 1).ToString(), "i" + (i + 1).ToString()); dataGridView1.Columns[i].Width = 35; }
Random rnd = new Random();
for (int j = 0; j < numericUpDown2.Value; ++j) { dataGridView1.Rows.Add();
foreach (DataGridViewCell cell in dataGridView1.Rows[j].Cells) { cell.Value = rnd.Next(-100, 100); matrix2D[cell.ColumnIndex, j] = (int)cell.Value; } }
rnd = null; } catch (Exception ex) { MessageBox.Show("Приложение вызвало критическую ошибку!\n\r" + ex.Message + "\n\rВ результате чего будет закрыто.", "Критическая ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); Application.Exit(); } }
private void Form1_Load(object sender, EventArgs e) { numericUpDown1.Maximum = int.MaxValue; numericUpDown2.Maximum = int.MaxValue;
MatrixInitialize(); }
private void button1_Click(object sender, EventArgs e) { MatrixInitialize(); }
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) { if (dataGridView1.CurrentCell.Value != null && dataGridView1.CurrentCell.Value != string.Empty) { string value = dataGridView1.CurrentCell.Value.ToString();
int result = 0;
int.TryParse(value, out result); dataGridView1.CurrentCell.Value = result; } else dataGridView1.CurrentCell.Value = 0;
int.TryParse(dataGridView1.CurrentCell.Value.ToString(), out matrix2D[dataGridView1.CurrentCell.ColumnIndex, dataGridView1.CurrentCell.RowIndex]); }
private void button2_Click(object sender, EventArgs e) { int positiveColNum = 0; int[] buffMas = new int[matrix2D.GetLength(1)];
for (int i = 1; i < matrix2D.GetLength(0); ++i) { //MessageBox.Show("Рассматривается столбец № " + i.ToString()); for(int j = 0; j < matrix2D.GetLength(1); ++j) { // MessageBox.Show("Рассматривается строка № " + j.ToString()); if (matrix2D[i, j] > 0) { if (j == matrix2D.GetLength(1) - 1) positiveColNum = i; } else { //MessageBox.Show("Найден отрицательный элемент matrix2D[" + i.ToString() + ", " + j.ToString() + "] = " + // matrix2D[i, j].ToString()); break; } buffMas[j] = matrix2D[i, j]; } }
if (positiveColNum > 0) { for (int i = 0; i < matrix2D.GetLength(1); ++i) { matrix2D[positiveColNum, i] = matrix2D[0, i]; matrix2D[0, i] = buffMas[i]; } }
foreach(DataGridViewRow row in dataGridView1.Rows) foreach(DataGridViewCell cell in row.Cells) cell.Value = matrix2D[cell.ColumnIndex, cell.RowIndex]; //MessageBox.Show(positiveColNum.ToString()); } }
|
|