Этот проект представляет собой простое приложение для анализа чисел. Основная цель заключалась в том, чтобы снова попрактиковаться в основных концепциях WinForms, таких как работа с элементами управления панели инструментов, обработка событий, коллекции списков, динамическое обновление элементов пользовательского интерфейса и реализация базовой логики настольного приложения.
Приложение позволяет пользователю:
- добавлять числа с помощью элемента управления NumericUpDown
- отображать их внутри ListBox
- вычислить количество, сумму, среднее, минимум, максимум
- вычислить четное/нечетное, положительное/отрицательное и нулевое количество
- сортировать числа по возрастанию/убыванию
- удалить выбранные числа
- очистить список
- обработка действий меню
- NumericUpDown
- ListBox
- Ярлыки
- Кнопки
- Групповые поля
- MenuStrip
- Проверка MessageBox
- Коллекции списков
- циклы и условная логика
- некоторые методы LINQ
В основном мне хотелось бы услышать отзывы относительно:
- приемлема ли моя общая структура для Практический проект WinForms для начинающих/среднего уровня
- является ли хранение данных в нескольких коллекциях List хорошим подходом
- допустимо ли ручное обновление ListBox в небольших проектах WinForms
- возможные улучшения в отношении именования, проверки, разделения логики и очистки Практика WinForms
Код: Выделить всё
Form1.cs:Код: Выделить всё
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Numbers
{
public partial class Form1 : Form
{
List numbers = new List();
List even = new List();
List odd = new List();
List Null = new List();
public Form1()
{
InitializeComponent();
numericUpDown1.Minimum = -1000000;
numericUpDown1.Maximum = 1000000;
}
private void button1_Click(object sender, EventArgs e)
{
decimal number = numericUpDown1.Value;
numbers.Add(number);
if (number % 2 == 0 && number!= 0)
{
even.Add(number);
}
if (number % 2 == 1 || number%2 == -1 && number != 0)
{
odd.Add(number);
}
else
{
Null.Add(number);
}
listBox1.Items.Clear();
foreach (decimal n in numbers)
{
listBox1.Items.Add(n);
}
}
private void button3_Click(object sender, EventArgs e)
{
int pt = 0;
int nt = 0;
int null_ = 0;
Count.Text = Convert.ToString(numbers.Count);
Sum.Text = Convert.ToString(numbers.Sum());
Avarage.Text = (numbers.Sum() / numbers.Count()).ToString("F2");
Minimum.Text = Convert.ToString(numbers.Min());
Maximum.Text = Convert.ToString(numbers.Max());
Even.Text = Convert.ToString(even.Count());
Odd.Text = Convert.ToString(odd.Count());
foreach (decimal item in numbers)
{
if (item > 0)
{
pt++;
}
if (item < 0)
{
nt++;
}
if (item == 0)
{
null_++;
}
}
Positive.Text = Convert.ToString(pt);
Negative.Text = Convert.ToString(nt);
Nulls.Text = Convert.ToString(null_);
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listBox1.SelectedItem != null)
{
label3.Text = "Selected number: " + listBox1.SelectedItem.ToString();
}
}
private void sToolStripMenuItem_Click(object sender, EventArgs e)
{
if (numbers.Count != 0)
{
numbers.Clear();
even.Clear();
odd.Clear();
Null.Clear();
}
}
private void quitToolStripMenuItem_Click(object sender, EventArgs e)
{
DialogResult answer = MessageBox.Show(
"Are you sure, you wanna leave?",
"Exit",
MessageBoxButtons.YesNo
);
if (answer == DialogResult.Yes)
{
Application.Exit();
}
}
private void addNumberToolStripMenuItem_Click(object sender, EventArgs e)
{
numericUpDown1.Focus();
}
private void deleteSelectedToolStripMenuItem_Click(object sender, EventArgs e)
{
button2.Focus();
}
private void analysisToolStripMenuItem_Click(object sender, EventArgs e)
{
button3.Focus();
}
private void button2_Click(object sender, EventArgs e)
{
if (listBox1.SelectedItem == null )
{
MessageBox.Show("There is no selected row!");
return;
}
listBox1.Items.Remove(listBox1.SelectedItem);
}
private void button4_Click(object sender, EventArgs e)
{
numbers.Sort();
listBox1.Items.Clear();
foreach (decimal n in numbers)
{
listBox1.Items.Add(n);
}
}
private void button5_Click(object sender, EventArgs e)
{
numbers.Sort();
numbers.Reverse();
listBox1.Items.Clear();
foreach (decimal n in numbers)
{
listBox1.Items.Add(n);
}
}
private void increasToolStripMenuItem_Click(object sender, EventArgs e)
{
button4.Focus();
}
private void decreaseToolStripMenuItem_Click(object sender, EventArgs e)
{
button5.Focus();
}
}
}


