Табличная форма представления и редактирования значений
Рассмотрим обработчики событий окна табличной формы представления и редактирования значений координат вершин прямоугольников.
Обработчики реализованы на форме 2, изображенной на рисунке 6.6. Для табличной формы представления значений массива использован элемент DataGridView. Рассмотрим его применение в интерфейсе, позволяющем пользователю вводить и отображать двумерные массивы.
Рисунок 6.6 – Табличная форма представления значений массива
В свойствах элемента DataGridView выбираем Columns и запускаем редактор параметров столбцов таблицы, в котором мы добавляем необходимое количество столбцов и определяем название столбцов в окне формы и имя столбцов в программе (см. рисунок 6.7). С помощью редактора столбцов определяются их ширина в окне формы.
Рисунок 6.7 – Работа с редактором столбцов DataGridView
Исходный код формы 2 имеет следующий вид:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{
public static int i, j;
public static string kop;
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
for (i = 0; i < 6; i++)
{
dataGridView1.Rows.Add();
for (j = 0; j < 6; j++)
{
dataGridView1.Rows[i].Cells[j].Value=Form1.a[i,j].ToString();
}
if (Form1.a[i,4]==0) dataGridView1.Rows[i].Cells[4].Value = "Прямоугольник";
else dataGridView1.Rows[i].Cells[4].Value = "Квадрат";
}
}
private void button2_Click(object sender, EventArgs e)
{
Close();
}
private void button3_Click(object sender, EventArgs e)
{
string elem = "";
bool ok;
int k;
for (i = 0; i < 6; i++)
for (j = 0; j < 4; j++)
{
do
{
ok = true;
try
{
elem = dataGridView1.Rows[i].Cells[j].Value.ToString();
Form1.a[i, j] = int.Parse(elem);
}
catch (Exception any)
{
Form5 f5 = new Form5();
if (f5.ShowDialog() == DialogResult.OK) k = 0;
dataGridView1.Rows[i].Cells[j].Value = kop;
ok = false;
}
} while (!ok);
}
for (i = 0; i < 6; i++)
{
if (Math.Abs(Form1.a[i,0]-Form1.a[i,2]) == Math.Abs(Form1.a[i, 1] - Form1.a[i, 3])) Form1.a[i, 4] = 1;
else Form1.a[i, 4] = 0;
Form1.a[i, 5] = Math.Abs(Form1.a[i, 0] - Form1.a[i, 2]) * Math.Abs(Form1.a[i, 1] - Form1.a[i, 3]);
}
}
}
}
На форме 2 реализованы 3 обработчика событий – вывод матрицы в таблицу элемента DataGridView, редактирование значений матрицы и возврат к 1 форме. Рассмотрим каждый фрагмент кода отдельно.
Вывод матрицы в таблицу элемента DataGridView содержит цикл перебора строк таблице, в котором программно добавляется очередная строка и запускается цикл перебора столбцов таблицы.
Поскольку массив сформирован в виде глобальной переменной формы 1, то его использование в форме 2 требует следующей записи Form1.a[i,j].
Значение столбца 4 двумерного массива анализируется на наличие 0 – признак равенства сторон прямоугольника (квадрат).
В последний столбец выводится значение площади прямоугольника.
Процесс редактирования элементов DataGridView включает непосредственное изменение значений на форме 2 и запуск обработчика «Редактирование объекта», в котором содержимое элементов DataGridView переписывается в массив формы 1. Процесс перезаписи находится в охраняемом блоке. Если вы вместо цифр случайно введете символ буквы или другой знак, то запускается обработчик ошибочной ситуации, который создаст и откроет 5 диалоговое окно для повторного ввода ошибочного значения (см. рисунок 6.8).
Исходный код формы 5:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form5 : Form
{
public Form5()
{
InitializeComponent();
label1.Text = "a[" + Form2.i.ToString() + "," + Form2.j.ToString() + "]= ?";
}
private void button1_Click(object sender, EventArgs e)
{
Form2.kop = textBox1.Text;
Close();
}
}
}
Исправление ошибок ввода продолжается пока не будет введено правильное числовое значение.
Если в результате редактирования элементов DataGridView изменяется тип прямоугольника, например, получается квадрат, то это учитывается в 4 столбце массива. Одновременно перезаписывается новое значение площади нового прямоугольника.
Рисунок 6.8 – Исправление ошибки ввода
В приведенном коде формы 2 программно добавляется очередная строка элемента DataGridView. Можно программно формировать и столбцы элемента DataGridView (обычно это делается при однотипных столбцах). Например, если нам необходимо подготовить элемент DataGridView на 6 столбцов, то можно использовать следующий фрагмент кода для программного добавления столбцов:
dataGridView1.Columns.Clear();
DataGridViewColumn column;
for (int i = 0; i < 6; i++)
{
column = new DataGridViewTextBoxColumn();
column.DataPropertyName = "Column" + i.ToString();
column.Name = "Column" + i.ToString();
dataGridView1.Columns.Add(column);
}
В первой строке кода мы удаляем предыдущее «состояние столбцов» элемента DataGridView, объявляем переменную column а в цикле создаем объект column, которому присваиваем имя для формы и имя для программы и добавляем созданный объект нашему элементу.
Дата добавления: 2018-11-25; просмотров: 397;