ProgLab1_winforms/GUI/ArraySortGUI.cs

117 lines
4.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
}
}
}