Небольшое приложение менеджера складаC#

Место общения программистов C#
Anonymous
Небольшое приложение менеджера склада

Сообщение Anonymous »

Я снова начал изучать и практиковать C# WinForms после довольно долгого перерыва, поэтому прямо сейчас я пытаюсь восстановить свои основы с помощью небольших и простых проектов, прежде чем переходить к более сложным приложениям.
Основная цель этих проектов — снова освоиться с основными концепциями WinForms и элементами управления набором инструментов, такими как:
  • форма общения
  • event обработка
  • Использование DataGridView
  • Обработка MenuStrip
  • проверка
  • работа с различными элементами управления
  • базовая структура приложения
  • Общий рабочий процесс настольного приложения
Для практики я создал небольшое приложение для управления складом/инвентарем.
В настоящее время проект включает в себя такие функции, как:
  • добавление продуктов через отдельную форму
  • проверка продукта с помощью MessageBox
  • отображение товаров внутри DataGridView
  • поиск товаров по названию
  • удаление выбранных/всех строк
  • вычисление итогов
  • обработка различных способов доставки
  • управление наличием запасов
В проекте я использовал несколько общих компонентов и концепций WinForms, включая DataGridView, ComboBox, RadioButtons, NumericUpDown, CheckBox, MenuStrip, несколько форм, программирование, управляемое событиями, циклы, условную логику и некоторые базовые возможности использования LINQ.
Я загружу полные файлы проекта вместе с парой скриншотов приложения.
Поскольку я заново изучаю WinForms и пытаюсь улучшить свою общую структуру и привычки, я буду очень признателен за любые отзывы, советы, идеи по улучшению или предложения о лучших практиках, которые могут иметь более опытные разработчики.
Form1.cs:

Код: Выделить всё

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 WareHouse
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dataGridView1.MultiSelect = true;
}

private void newProductToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 form = new Form2();
if (form.ShowDialog() == DialogResult.OK)
{
dataGridView1.Rows.Add(
form.name,
form.Category,
form.Price,
form.Quantity,
form.InStock ? "True" : "False",
form.ShippingMethod,
form.Total

);
}
}

private void deleteAllToolStripMenuItem_Click(object sender, EventArgs e)
{
if (dataGridView1.Rows.Count == 0)
{
MessageBox.Show("There is nothing to delete!");
return;
}

DialogResult valasz = MessageBox.Show(
"You sure, you wanna delete all your data?",
"Yes?",
MessageBoxButtons.YesNo,
MessageBoxIcon.Warning
);

if (valasz == DialogResult.Yes)
{
dataGridView1.Rows.Clear();
}
}

private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
DialogResult valasz = MessageBox.Show(
"Are you sure, you wanna leave?",
"Exit",
MessageBoxButtons.YesNo
);

if (valasz == DialogResult.Yes)
{
Application.Exit();
}
}

private void deleteSelectedToolStripMenuItem_Click(object sender, EventArgs e)
{
if (dataGridView1.SelectedRows.Count == 0)
{
MessageBox.Show("There is no selected row!");
return;
}

foreach (DataGridViewRow row in dataGridView1.SelectedRows)
{
if (!row.IsNewRow)
dataGridView1.Rows.Remove(row);
}
}

private void summarizeToolStripMenuItem_Click(object sender, EventArgs e)
{
int productCount = 0;
int inStockCount = 0;
decimal totalValue = 0;

foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.IsNewRow)
continue;

productCount++;

// Total row
totalValue += Convert.ToDecimal(row.Cells[6].Value);

// InStock row
if (row.Cells[4].Value.ToString() == "True")
{
inStockCount++;
}
}

MessageBox.Show(
$"All products number: {productCount}\n" +
$"All total: {totalValue} Ft\n" +
$"Products in stock: {inStockCount}",
"Summerize"
);
}

private void searchToolStripMenuItem_Click(object sender, EventArgs e)
{
textBox1.Focus();
}

private void button1_Click(object sender, EventArgs e)
{
string search = textBox1.Text.Trim().ToLower();

foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.IsNewRow)
continue;

string productName = row.Cells[0].Value.ToString().ToLower();

if (productName.Contains(search))
{
row.Selected = true;
dataGridView1.FirstDisplayedScrollingRowIndex = row.Index;
}
else
{
row.Selected = false;
}
}
}
}
}
Form2.cs:

Код: Выделить всё

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 static System.Windows.Forms.VisualStyles.VisualStyleElement;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Button;

namespace WareHouse
{
public partial class Form2 : Form
{
public string name { get; private set; }
public string Category { get; private set; }
public decimal Price { get; private set; }
public int Quantity { get; private set; }
public bool InStock { get; private set; }
public string ShippingMethod { get; private set; }
public bool ShippingNormal { get; private set; }
public bool ShippingExpress { get; private set; }
public bool ShippingPersonalPickUp { get; private set;  }
public decimal Total { get; private set; }

public Form2()
{
InitializeComponent();

comboBox1.Items.AddRange(new object[]
{
"Electonic",
"Food",
"Clothing",
"Other"
});
numericUpDown1.Minimum = 0;
numericUpDown1.Maximum = 1000000;

numericUpDown2.Minimum = 0;
numericUpDown2.Maximum = 1000000;
}

private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text.Trim() == "")
{
MessageBox.Show("You must give a product name!");
return;
}

if (comboBox1.SelectedItem == null)
{
MessageBox.Show("Please select a category!");
return;
}

if (numericUpDown1.Value

Вернуться в «C#»