ProgLab1_winforms/GUI/ArraySortGUI.cs

117 lines
4.7 KiB
C#
Raw Permalink Normal View History

using laba3.Core;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ProgLab1.GUI
{
public partial class ArraySortGUI : Form
{
private long time1;
private long time2;
private Label lblArraySize;
private TextBox txtArraySize;
private Button btnRun;
private TextBox txtOutput;
public ArraySortGUI(Form onCloseForm)
{
// Initialize components
lblArraySize = new Label
{
Location = new System.Drawing.Point(12, 12),
Name = "lblArraySize",
Size = new System.Drawing.Size(100, 22),
Text = "Размер массива:"
};
txtArraySize = new TextBox
{
Location = new System.Drawing.Point(150, 12),
Name = "txtArraySize",
Size = new System.Drawing.Size(150, 22),
PlaceholderText = "Размер массива"
};
btnRun = new Button
{
Location = new System.Drawing.Point(310, 10),
Name = "btnRun",
Size = new System.Drawing.Size(100, 25),
Text = "Запустить",
UseVisualStyleBackColor = true
};
btnRun.Click += new EventHandler(this.btnRun_Click);
txtOutput = new TextBox
{
Location = new System.Drawing.Point(12, 50),
Multiline = true,
Name = "txtOutput",
ReadOnly = true,
ScrollBars = ScrollBars.Vertical,
Size = new System.Drawing.Size(400, 300),
WordWrap = true
};
// Set up form
this.ClientSize = new System.Drawing.Size(424, 361);
this.Controls.Add(lblArraySize);
this.Controls.Add(txtArraySize);
this.Controls.Add(btnRun);
this.Controls.Add(txtOutput);
this.Name = "ArraySortGUI";
this.Text = "Array Sort Demo";
this.FormClosing += new FormClosingEventHandler((object sender, FormClosingEventArgs e) => {onCloseForm.Show(); });
}
private void btnRun_Click(object sender, EventArgs e)
{
int size;
if (!int.TryParse(txtArraySize.Text, out size) || size < 1)
{
MessageBox.Show("Размер массива должен быть числом больше 0!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
txtOutput.Clear();
Utils.Arrays array1 = new Utils.Arrays(size, 100);
Utils.Arrays array2 = new Utils.Arrays(array1);
txtOutput.AppendText("Для Массива 1 будет использована \"гномья сортировка\"" + Environment.NewLine);
txtOutput.AppendText("Для Массива 2 будет использована \"сортировка шелла\"" + Environment.NewLine);
if (size <= 10)
{
txtOutput.AppendText("Массив 1 (с начальными значениями): " + Environment.NewLine + array1.ToString() + Environment.NewLine);
txtOutput.AppendText("Массив 2 (с начальными значениями): " + Environment.NewLine + array2.ToString() + Environment.NewLine);
}
else
{
txtOutput.AppendText("Массивы не могут быть выведены на экран так как их размер больше 10" + Environment.NewLine);
}
txtOutput.AppendText("Сортируем..." + Environment.NewLine);
time1 = array1.gnomeSort();
time2 = array2.shellSort();
txtOutput.AppendText("Готово!" + Environment.NewLine);
if (size <= 10)
{
txtOutput.AppendText("Массив 1 (после гномьей сортировки): " + Environment.NewLine + array1.ToString() + Environment.NewLine);
txtOutput.AppendText("Массив 2 (после сортировки шелла): " + Environment.NewLine + array2.ToString() + Environment.NewLine);
}
txtOutput.AppendText($"Для сортировки 1 потребовалось {time1}мс" + Environment.NewLine);
txtOutput.AppendText($"Для сортировки 2 потребовалось {time2}мс" + Environment.NewLine);
}
}
}