C# Winforms простое приложение для анализа чиселC#

Место общения программистов C#
Anonymous
C# Winforms простое приложение для анализа чисел

Сообщение Anonymous »

Я снова начал изучать и практиковать C# WinForms после довольно долгого перерыва и восстанавливаю свои основы с помощью небольших практических проектов, прежде чем перейти к более крупным приложениям.
Этот проект представляет собой простое приложение для анализа чисел. Основная цель заключалась в том, чтобы снова практиковать основные концепции WinForms, такие как работа с элементами управления панели инструментов, обработка событий, коллекции списков, динамическое обновление элементов пользовательского интерфейса и реализация базовой логики настольного приложения.
Приложение позволяет пользователю:
  • добавлять числа с помощью элемента управления NumericUpDown
  • отображать их внутри ListBox
  • вычислить количество, сумму, среднее, минимум, максимум
  • вычислить четное/нечетное, положительное/отрицательное и нулевое количество
  • сортировать числа по возрастанию/убыванию
  • удалить выбранные числа
  • очистить список
  • обработка действий меню
В этом проекте я использовал несколько общих элементов и концепций WinForms, в том числе:
  • NumericUpDown
  • ListBox
  • Ярлыки
  • Кнопки
  • Групповые поля
  • MenuStrip
  • Проверка MessageBox
  • Коллекции списков
  • циклы и условная логика
  • некоторые методы LINQ
Я загружу полные файлы проекта вместе со скриншотами приложения.
В основном мне хотелось бы услышать отзывы относительно:
  • приемлема ли моя общая структура для Практический проект WinForms для начинающих/среднего уровня
  • является ли хранение данных в нескольких коллекциях List хорошим подходом
  • допустимо ли ручное обновление ListBox в небольших проектах WinForms
  • возможные улучшения в отношении именования, проверки, разделения логики и очистки Практика 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();
}

}
}
Изображение

Изображение

Изображение

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