Diplom_B/IzdForm.cs
2021-07-15 23:13:18 +05:00

198 lines
4.4 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 Diplom_B.DB;
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 Diplom_B
{
public partial class IzdForm : Form
{
public IzdForm()
{
InitializeComponent();
errorLable.Visible = false;
idLable.Text = "";
try
{
using (var db = new MainDB()){
var res = WorkDB.ListIzdelie();
UpdateTable(res);
}
}
catch
{
ShowError();
}
}
private void createButton_Click(object sender, EventArgs e)
{
try
{
if (!double.TryParse(cenaBox.Text, out double cena))
{
ShowError("Ошибка цены.");
return;
}
if (!int.TryParse(otdRazBox.Text, out int otdRaz))
{
ShowError("Ошибка отдела-разработчика.");
return;
}
{
var r = new Izdelie()
{
Name = nameBox.Text,
DecNum = decBox.Text,
Shifr = shifrBox.Text,
Litera = literaBox.Text,
Cena = cena,
OtdelRazrab = otdRaz,
Ved = vedBox.Text,
GlavKonstr = glavKonstrBox.Text
};
WorkDB.AddIzdelie(r);
UpdateTable(WorkDB.ListIzdelie());
}
}
catch (Exception ex)
{
ShowError(ex.Message);
}
}
private void UpdateTable(Izdelie[] arr)
{
{
var r = dataGridView1.Rows;
while (r.Count > 0)
r.Remove(r[0]);
var c = dataGridView1.Columns;
while (c.Count > 0)
c.Remove(c[0]);
}
{
var c = dataGridView1.Columns;
c.Add("Id", "№");
c["Id"].Width = 40;
c.Add("Name", "Наим.");
c["Name"].Width = 60;
c.Add("DecNum", "Дец. №");
c["DecNum"].Width = 120;
c.Add("Shifr", "Шифр");
c["Shifr"].Width = 80;
c.Add("Litera", "Литера");
c["Litera"].Width = 50;
c.Add("Cena", "Цена");
c["Cena"].Width = 70;
c.Add("OtdelRazrab", "Отдел");
c["OtdelRazrab"].Width = 40;
c.Add("Ved", "Вед.");
c.Add("GlavKonstr", "Глав. констр.");
}
{
var r = dataGridView1.Rows;
foreach(var izd in arr)
r.Add(new object[] {
izd.Id,
izd.Name,
izd.DecNum,
izd.Shifr,
izd.Litera,
izd.Cena.ToString("F2") + " Р",
izd.OtdelRazrab,
izd.Ved,
izd.GlavKonstr
});
}
if (dataGridView1.Rows.Count > 0)
dataGridView1.Rows[0].Selected = true;
dataGridView1_CurrentCellChanged(this, new EventArgs());
}
private Task errDrop;
private void ShowError(string msg = null)
{
errorLable.Text = string.IsNullOrEmpty(msg) ? "Неизвестная ошибка." : msg;
errorLable.Visible = true;
errDrop = new Task(() =>
{
var fd = errDrop.Id;
Task.Delay(5000).Wait();
if (errDrop.Id == fd)
if (InvokeRequired) Invoke((Action)(() => { errorLable.Visible = false; }));
else errorLable.Visible = false;
});
errDrop.Start();
}
private void dataGridView1_CurrentCellChanged(object sender, EventArgs e)
{
ClearBoxes();
if (dataGridView1.SelectedRows.Count != 1)
return;
{
var izd = WorkDB.GetIzdelie((int)dataGridView1.SelectedRows[0].Cells[0].Value);
if (izd == null)
return;
idLable.Text = izd.Id.ToString();
nameBox.Text = izd.Name;
decBox.Text = izd.DecNum;
shifrBox.Text = izd.Shifr;
literaBox.Text = izd.Litera;
cenaBox.Text = izd.Cena.ToString();
otdRazBox.Text = izd.OtdelRazrab.ToString();
vedBox.Text = izd.Ved;
glavKonstrBox.Text = izd.GlavKonstr;
}
}
private void clearButton_Click(object sender, EventArgs e)
{
ClearBoxes();
}
private void ClearBoxes()
{
idLable.Text = "";
nameBox.Text = "";
decBox.Text = "";
shifrBox.Text = "";
literaBox.Text = "";
cenaBox.Text = "";
otdRazBox.Text = "";
vedBox.Text = "";
glavKonstrBox.Text = "";
}
private Task filterDrop;
private void searchBox_TextChanged(object sender, EventArgs e)
{
filterDrop = new Task(() =>
{
var fd = filterDrop.Id;
Task.Delay(1000).Wait();
if (filterDrop.Id == fd)
if (InvokeRequired) Invoke((Action)(() => { UpdateTable(WorkDB.ListIzdelie(searchBox.Text)); }));
else UpdateTable(WorkDB.ListIzdelie(searchBox.Text));
});
filterDrop.Start();
}
private void resetSearchButton_Click(object sender, EventArgs e)
{
searchBox.Text = "";
filterDrop = new Task(() => { return; });
UpdateTable(WorkDB.ListIzdelie());
}
}
}