Табличная форма представления и редактирования значений

 

Рассмотрим обработчики событий окна табличной формы представления и редактирования значений координат вершин прямоугольников.

Обработчики реализованы на форме 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;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.018 сек.