PIbd-31_Alekseev.I.S._COP_3/Forms/MainForm.cs
Иван Алексеев db32ab60ce сдано тип
2024-10-04 10:33:17 +04:00

220 lines
9.1 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 FormLibrary;
using FormLibrary.Exceptions;
using FormLibrary.HelperClasses;
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;
using System.Windows.Forms.VisualStyles;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Header;
using OxyPlot.Legends;
namespace Forms
{
public partial class MainForm : Form
{
private int? savedValue;
public MainForm()
{
InitializeComponent();
customListBox1.SelectedItemChanged += CustomListBox1_SelectedItemChanged;
integerInputControl1.ValueChanged += IntegerInputControl1_ValueChanged;
integerInputControl1.CheckBoxChanged += IntegerInputControl_CheckBoxChanged;
}
private void CustomListBox1_SelectedItemChanged(object? sender, EventArgs e)
{
if (sender is CustomListBox customListBox)
{
string selectedItem = customListBox.SelectedItem;
MessageBox.Show($"Выбранный элемент: {selectedItem}", "Выбор элемента", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
private void ButtonLoad_Click(object? sender, EventArgs e)
{
List<string> items = new List<string>();
for (int i = 0; i <= 5; i++)
{
items.Add("Item " + i.ToString());
}
customListBox1.PopulateListBox(items);
}
private void ButtonClear_Click(object? sender, EventArgs e)
{
customListBox1.ClearListBox();
}
private void buttonInput_Click(object sender, EventArgs e)
{
try
{
savedValue = integerInputControl1.Value;
MessageBox.Show("Значение успешно сохранено.", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (EmptyValueException ex)
{
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
catch (InvalidValueTypeException ex)
{
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void buttonOutput_Click(object sender, EventArgs e)
{
if (savedValue.HasValue)
{
MessageBox.Show($"Сохраненное значение: {savedValue}", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("Сохраненное значение: null", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
private void IntegerInputControl1_ValueChanged(object? sender, EventArgs e)
{
textBox1.Text = "Textbox changed";
}
private void IntegerInputControl_CheckBoxChanged(object? sender, EventArgs e)
{
textBox1.Text = "Checkbox changed";
}
private void ButtonFillTable_Click(object sender, EventArgs e)
{
var columns = new List<(string HeaderText, string DataPropertyName, float FillWeight)>
{
("Группа", "Group", 30),
("ФИО", "FullName", 50),
("Курс", "Course", 20)
};
valueTableControl1.ConfigureColumns(columns);
var students = new List<Student>
{
new Student { Group = "Пибд-31", FullName = "Алексеев Иван Сергеевич", Course = 3 },
new Student { Group = "Пибд-31", FullName = "Анисин Руслан Сергеевич", Course = 3 },
new Student { Group = "Пибд-31", FullName = "Афанасьев Степан Сергеевич", Course = 3 }
};
valueTableControl1.FillData(students);
}
private void ButtonClearTable_Click(object sender, EventArgs e)
{
valueTableControl1.ClearRows();
}
private void ButtonShowData_Click(object sender, EventArgs e)
{
try
{
var selectedStudent = valueTableControl1.GetSelectedObject<Student>();
MessageBox.Show($"Группа: {selectedStudent.Group}, ФИО: {selectedStudent.FullName}, Курс: {selectedStudent.Course}",
"Выбранный студент",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
catch (InvalidOperationException ex)
{
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void GeneratePdfButton_Click(object sender, EventArgs e)
{
try
{
var pdfData = new PdfDocumentData(
"C:\\Users\\Admin\\Downloads\\Отчёт.pdf",
"Название документа",
new List<string[,]>
{
new string[,]
{
{ "Ячейка 1", "Ячейка 2", "Ячейка 3" },
{ "Ячейка 4", "Ячейка 5", "Ячейка 6" }
},
new string[,]
{
{ "Ячейка 1", "Ячейка 2" },
{ "Ячейка 1", "Ячейка 2" }
}
});
var documentGenerator = new PDFTable();
documentGenerator.GeneratePdf(pdfData);
MessageBox.Show("PDF-документ успешно создан!", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show($"Произошла ошибка: {ex.Message}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void btnGeneratePDF_Click(object sender, EventArgs e)
{
var settings = new PDFTableSettings<Student>
{
FilePath = "C:\\Users\\Admin\\Downloads\\Отчет2.pdf",
DocumentTitle = "Отчет по студентам",
HeaderRowHeight = 1.0f,
DataRowHeight = 1.0f,
DataList = new List<Student>
{
new Student { Number = 1, Group = "Пибд-31", FullName = "Алексеев Иван", Course = 3 },
new Student { Number = 2, Group = "Пибд-31", FullName = "Анисин Руслан", Course = 3 },
new Student { Number = 3, Group = "Пибд-31", FullName = "Афанасьев Степан", Course = 3 }
},
Columns = new List<(string, float, string, int)>
{
("№", 1.0f, nameof(Student.Number), 0),
("Группа", 4.0f, nameof(Student.Group), 1),
("ФИО", 6.0f, nameof(Student.FullName), 2),
("Курс", 2.0f, nameof(Student.Course), 3)
}
};
try
{
pdfTableCustom1.GeneratePDFWithHead(settings);
MessageBox.Show("PDF-документ успешно создан!", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show($"Ошибка: {ex.Message}");
}
}
private void btnGenerateHistogrammPdf_Click(object sender, EventArgs e)
{
try
{
var histogramGenerator = new ComponentHistogramToPdf();
var chartData = new List<ChartData>
{
new ChartData { SeriesName = "Серияd 1", Data = new Dictionary<string, double> { { "Категорияz 1", 2 }, { "Категорияx 2", 10 } } },
new ChartData { SeriesName = "Серияs 2", Data = new Dictionary<string, double> { { "Категорияa 1", 3 }, { "Категорияs 2", 5 } } },
new ChartData { SeriesName = "Серияs 3", Data = new Dictionary<string, double> { { "Категорияa 1", 3 }, { "Категорияs 2", 8 } } }
};
string filePath = "C:\\Users\\Admin\\Downloads\\Гистограмма.pdf";
histogramGenerator.CreateHistogramPdf(filePath, "Название документа", "Заголовок гистограммы", LegendPosition.BottomCenter, chartData);
MessageBox.Show("PDF успешно сгенерирован!", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show($"Ошибка: {ex.Message}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}