Реализовал отслеживание изменений на форме редактирования заказа

This commit is contained in:
Никита Потапов 2024-12-04 16:36:07 +04:00
parent dbf68b6614
commit e396435644
3 changed files with 132 additions and 30 deletions

View File

@ -35,7 +35,7 @@
labelOrderImage = new Label(); labelOrderImage = new Label();
textBoxImagePath = new TextBox(); textBoxImagePath = new TextBox();
buttonSelectImage = new Button(); buttonSelectImage = new Button();
list1 = new WinFormsLibrary1.List(); listBoxComponentProducts = new WinFormsLibrary1.List();
labelOrderProducts = new Label(); labelOrderProducts = new Label();
SuspendLayout(); SuspendLayout();
// //
@ -47,6 +47,7 @@
textBoxCustomerFIO.PlaceholderText = "Иванов Иван Иванович"; textBoxCustomerFIO.PlaceholderText = "Иванов Иван Иванович";
textBoxCustomerFIO.Size = new Size(688, 27); textBoxCustomerFIO.Size = new Size(688, 27);
textBoxCustomerFIO.TabIndex = 0; textBoxCustomerFIO.TabIndex = 0;
textBoxCustomerFIO.TextChanged += textBoxCustomerFIO_TextChanged;
// //
// labelCustomerFIO // labelCustomerFIO
// //
@ -91,6 +92,7 @@
textBoxImagePath.Name = "textBoxImagePath"; textBoxImagePath.Name = "textBoxImagePath";
textBoxImagePath.Size = new Size(544, 27); textBoxImagePath.Size = new Size(544, 27);
textBoxImagePath.TabIndex = 5; textBoxImagePath.TabIndex = 5;
textBoxImagePath.TextChanged += textBoxImagePath_TextChanged;
// //
// buttonSelectImage // buttonSelectImage
// //
@ -103,14 +105,14 @@
buttonSelectImage.UseVisualStyleBackColor = true; buttonSelectImage.UseVisualStyleBackColor = true;
buttonSelectImage.Click += buttonSelectImage_Click; buttonSelectImage.Click += buttonSelectImage_Click;
// //
// list1 // listBoxComponentProducts
// //
list1.Location = new Point(-21, 117); listBoxComponentProducts.Location = new Point(-21, 117);
list1.Margin = new Padding(3, 4, 3, 4); listBoxComponentProducts.Margin = new Padding(3, 4, 3, 4);
list1.Name = "list1"; listBoxComponentProducts.Name = "listBoxComponentProducts";
list1.SelectedItem = ""; listBoxComponentProducts.SelectedItem = "";
list1.Size = new Size(382, 371); listBoxComponentProducts.Size = new Size(382, 371);
list1.TabIndex = 7; listBoxComponentProducts.TabIndex = 7;
// //
// labelOrderProducts // labelOrderProducts
// //
@ -127,7 +129,7 @@
AutoScaleMode = AutoScaleMode.Font; AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(833, 382); ClientSize = new Size(833, 382);
Controls.Add(labelOrderProducts); Controls.Add(labelOrderProducts);
Controls.Add(list1); Controls.Add(listBoxComponentProducts);
Controls.Add(buttonSelectImage); Controls.Add(buttonSelectImage);
Controls.Add(textBoxImagePath); Controls.Add(textBoxImagePath);
Controls.Add(labelOrderImage); Controls.Add(labelOrderImage);
@ -137,6 +139,7 @@
Controls.Add(textBoxCustomerFIO); Controls.Add(textBoxCustomerFIO);
Name = "FormOrderEdit"; Name = "FormOrderEdit";
Text = "Заказ"; Text = "Заказ";
FormClosing += FormOrderEdit_FormClosing;
Load += FormOrderEdit_Load; Load += FormOrderEdit_Load;
ResumeLayout(false); ResumeLayout(false);
PerformLayout(); PerformLayout();
@ -151,7 +154,7 @@
private Label labelOrderImage; private Label labelOrderImage;
private TextBox textBoxImagePath; private TextBox textBoxImagePath;
private Button buttonSelectImage; private Button buttonSelectImage;
private WinFormsLibrary1.List list1; private WinFormsLibrary1.List listBoxComponentProducts;
private Label labelOrderProducts; private Label labelOrderProducts;
} }
} }

View File

@ -1,4 +1,6 @@
using InternetShopContracts.LogicsContracts; using DocumentFormat.OpenXml.Bibliography;
using InternetShopContracts.DataViewModels;
using InternetShopContracts.LogicsContracts;
namespace InternetShopForms.Orders namespace InternetShopForms.Orders
{ {
@ -6,20 +8,102 @@ namespace InternetShopForms.Orders
{ {
private IOrderLogic _orderLogic; private IOrderLogic _orderLogic;
public int? OrderId; public int? OrderId;
private bool IsFieldsChanged = false;
private string OriginalTitle;
public FormOrderEdit(IOrderLogic orderLogic) public FormOrderEdit(IOrderLogic orderLogic)
{ {
InitializeComponent(); InitializeComponent();
_orderLogic = orderLogic; _orderLogic = orderLogic;
OriginalTitle = Text;
writeComponentCustomerEmail.ChangeText += textBoxCustomerEmail_Changed;
listBoxComponentProducts.SelectedElementChange += listBoxProductsList_Changed;
}
private void FieldChanged()
{
if (!IsFieldsChanged)
{
Text = OriginalTitle + "*";
}
IsFieldsChanged = true;
} }
private void buttonSelectImage_Click(object sender, EventArgs e) private void buttonSelectImage_Click(object sender, EventArgs e)
{ {
// todo using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
openFileDialog.InitialDirectory = "d:\\tmp";
openFileDialog.Filter = "Image files (*.jpg;*.png)|*.jpg;*.png|All files (*.*)|*.*";
openFileDialog.FilterIndex = 1;
openFileDialog.RestoreDirectory = true;
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string prevText = textBoxImagePath.Text;
textBoxImagePath.Text = openFileDialog.FileName;
if (prevText != textBoxImagePath.Text)
{
FieldChanged();
}
}
}
} }
private void FormOrderEdit_Load(object sender, EventArgs e) private void FormOrderEdit_Load(object sender, EventArgs e)
{ {
// todo if (OrderId != null)
{
LoadData();
}
}
private void LoadData()
{
OrderViewModel? orderViewModel = _orderLogic.ReadElement(
new InternetShopContracts.DataSearchModels.OrderSearchModel { Id = OrderId }
);
if (orderViewModel == null)
{
MessageBox.Show("Заказ не найден", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
textBoxCustomerFIO.Text = orderViewModel.CustomerFIO;
textBoxImagePath.Text = orderViewModel.ImagePath;
writeComponentCustomerEmail.Text = orderViewModel.CustomerEmail;
listBoxComponentProducts.ListSet(orderViewModel.ProductNames.ToArray());
}
private void FormOrderEdit_FormClosing(object sender, FormClosingEventArgs e)
{
if (IsFieldsChanged)
{
DialogResult result = MessageBox.Show("Изменения не сохранятся, вы хотите выйти?",
"Предупреждение", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.No)
{
e.Cancel = true;
}
}
}
private void textBoxCustomerFIO_TextChanged(object sender, EventArgs e)
{
FieldChanged();
}
private void textBoxImagePath_TextChanged(object sender, EventArgs e)
{
FieldChanged();
}
private void listBoxProductsList_Changed(object sender, EventArgs e)
{
FieldChanged();
}
private void textBoxCustomerEmail_Changed(object sender, EventArgs e)
{
FieldChanged();
} }
} }
} }

View File

@ -8,6 +8,7 @@ using InternetShopForms.Orders;
using InternetShopForms.Products; using InternetShopForms.Products;
using InternetShopLogics.Logics; using InternetShopLogics.Logics;
using System.Windows.Forms; using System.Windows.Forms;
using WinFormsLibrary1;
namespace InternetShopForms namespace InternetShopForms
{ {
@ -109,13 +110,21 @@ namespace InternetShopForms
private void EditOrder() private void EditOrder()
{ {
OrderViewModel? selectedOrder = null;
try
{
selectedOrder = tableComponent.GetSelectedObject<OrderViewModel>();
}
catch (Exception ex)
{
MessageBox.Show("Âûáåðèòå ñòðîêó");
return;
}
var service = Program.ServiceProvider?.GetService(typeof(FormOrderEdit)); var service = Program.ServiceProvider?.GetService(typeof(FormOrderEdit));
if (!(service is FormOrderEdit form)) if (!(service is FormOrderEdit form))
{ {
return; return;
} }
var selectedOrder = tableComponent.GetSelectedObject<OrderViewModel>();
form.OrderId = Convert.ToInt32(selectedOrder.Id); form.OrderId = Convert.ToInt32(selectedOrder.Id);
if (form.ShowDialog() == DialogResult.OK) if (form.ShowDialog() == DialogResult.OK)
{ {
@ -127,10 +136,17 @@ namespace InternetShopForms
{ {
try try
{ {
var selectedOrder = tableComponent.GetSelectedObject<OrderViewModel>(); OrderViewModel? selectedOrder = null;
try
if (selectedOrder != null)
{ {
selectedOrder = tableComponent.GetSelectedObject<OrderViewModel>();
}
catch (Exception ex)
{
MessageBox.Show("Âûáåðèòå ñòðîêó");
return;
}
var result = MessageBox.Show( var result = MessageBox.Show(
"Âû õîòèòå óäàëèòü çàêàç?", "Âû õîòèòå óäàëèòü çàêàç?",
"Ïðåäóïðåæäåíèå", "Ïðåäóïðåæäåíèå",
@ -145,8 +161,7 @@ namespace InternetShopForms
LoadData(); LoadData();
} }
LoadData(); LoadData();
}
LoadData();
} }
catch (Exception ex) catch (Exception ex)
{ {