Основная цель этих проектов — снова освоиться с основными концепциями WinForms и элементами управления набором инструментов, такими как:
- форма общения
- event обработка
- Использование DataGridView
- Обработка MenuStrip
- проверка
- работа с различными элементами управления
- базовая структура приложения
- Общий рабочий процесс настольного приложения
В настоящее время проект включает в себя такие функции, как:
- добавление продуктов через отдельную форму
- проверка продукта с помощью MessageBox
- отображение товаров внутри DataGridView
- поиск товаров по названию
- удаление выбранных/всех строк
- вычисление итогов
- обработка различных способов доставки
- управление наличием запасов
Я загружу полные файлы проекта вместе с парой скриншотов приложения.
Поскольку я заново изучаю 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;
}
}
}
}
}
Код: Выделить всё
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