You are on page 1of 3

Лабораторна робота №8

Тема - Візуальні застосування (windows-проект). Обробка подій (продовження)


Ціль: поглибити знання щодо створення Windows-застосуваннь. Створення
зв’язку меж двома формами застосування

Завдання

using MathNet.Numerics.LinearAlgebra.Double;

namespace Lab8;

public partial class Form1 : Form


{
public Form1()
{
InitializeComponent();
}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)


{
int value = int.Parse(comboBox1.SelectedItem.ToString());

ChangeTable(tableLayoutPanel1, value);
}
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
int value = int.Parse(comboBox2.SelectedItem.ToString());

ChangeTable(tableLayoutPanel2, value);
}

private void ChangeTable(TableLayoutPanel table, int value)


{
table.Controls.Clear();
table.ColumnCount = value;
table.RowCount = value;
for (int i = 0; i < table.ColumnCount; i++)
{
for (int j = 0; j < table.RowCount; j++)
{
var textBox = new TextBox()
{
Font = new Font(FontFamily.GenericSerif, 14),
};
table.Controls.Add(textBox);
table.SetColumn(textBox, i);
table.SetRow(textBox, j);
}
}
}

private void Form1_Load(object sender, EventArgs e)


{
ChangeTable(tableLayoutPanel1, 2);
ChangeTable(tableLayoutPanel2, 2);
comboBox1.SelectedIndex = 0;
comboBox2.SelectedIndex = 0;
}

private void button1_Click(object sender, EventArgs e)


{
int v1 = int.Parse(comboBox1.SelectedItem.ToString());
int v2 = int.Parse(comboBox2.SelectedItem.ToString());

var A = CreateMatrix(tableLayoutPanel1, v1);


var B = CreateMatrix(tableLayoutPanel2, v2);

ChangeResultTable(A + B);
}

private DenseMatrix CreateMatrix(TableLayoutPanel table, int value)


{
var matrixA = new double[value, value];

for (int i = 0; i < value; i++)


{
for (int j = 0; j < value; j++)
{
matrixA[i, j] = double.Parse(table.Controls[i * value + j].Text);
}
}

return DenseMatrix.OfArray(matrixA);
}

private void ChangeResultTable(DenseMatrix matrix)


{
tableLayoutPanel3.Controls.Clear();
tableLayoutPanel3.ColumnCount = matrix.ColumnCount;
tableLayoutPanel3.RowCount = matrix.RowCount;
for (int i = 0; i < tableLayoutPanel3.ColumnCount; i++)
{
for (int j = 0; j < tableLayoutPanel3.RowCount; j++)
{
var label = new Label()
{
Font = new Font(FontFamily.GenericSerif, 14),
BackColor = Color.White,
Height = 30,
Text = matrix[i, j].ToString(),
};
tableLayoutPanel3.Controls.Add(label);
tableLayoutPanel3.SetColumn(label, i);
tableLayoutPanel3.SetRow(label, j);
}
}
}

private void button2_Click(object sender, EventArgs e)


{
int v1 = int.Parse(comboBox1.SelectedItem.ToString());
int v2 = int.Parse(comboBox2.SelectedItem.ToString());

var A = CreateMatrix(tableLayoutPanel1, v1);


var B = CreateMatrix(tableLayoutPanel2, v2);

ChangeResultTable(A - B);
}

private void button3_Click(object sender, EventArgs e)


{
int v1 = int.Parse(comboBox1.SelectedItem.ToString());
int v2 = int.Parse(comboBox2.SelectedItem.ToString());

var A = CreateMatrix(tableLayoutPanel1, v1);


var B = CreateMatrix(tableLayoutPanel2, v2);

ChangeResultTable(A * B);
}

private void button4_Click(object sender, EventArgs e)


{
int v1 = int.Parse(comboBox1.SelectedItem.ToString());

var A = CreateMatrix(tableLayoutPanel1, v1);


int b = (int)numericUpDown1.Value;

ChangeResultTable(A * b);
}
}

Висновок: поглибив знання та навички у створенні віконних застосувань.


Створення зв’язку меж двома формами застосування

You might also like