Срочно!!! С++ Windows Form Реалізувати відсортований по алфавіту список імен з підтримкою операції додавання і видалення елементів, перевіркою допустимості введених значень (допустимі лише літери та цифри).
Приблизний зовнішній вигляд створюваного Windows додатку зображений на малюнку
Ответы на вопрос
Ответ:
#include <iostream>
#include <string>
#include <algorithm>
#include <regex>
#include <vector>
using namespace System::Windows::Forms;
using namespace System::Collections::Generic;
// клас для зберігання та відображення списку імен
ref class NameList {
private:
List<String^>^ names;
ListBox^ listBox;
public:
NameList(ListBox^ listBox) {
this->listBox = listBox;
names = gcnew List<String^>();
}
// функція для додавання імена до списку
void AddName(String^ name) {
if (IsValidName(name)) {
names->Add(name);
RefreshList();
}
else {
MessageBox::Show("Недопустиме ім'я");
}
}
// функція для видалення імена зі списку
void RemoveName(String^ name) {
names->Remove(name);
RefreshList();
}
// функція для оновлення відображення списку відсортованих імен
void RefreshList() {
listBox->Items->Clear();
names->Sort();
for each(String^ name in names) {
listBox->Items->Add(name);
}
}
private:
// функція для перевірки допустимості імен
bool IsValidName(String^ name) {
std::regex pattern("[a-zA-Z0-9]+");
std::string str = msclr::interop::marshal_as<std::string>(name);
return std::regex_match(str, pattern);
}
};
// форма додавання імена до списку
ref class AddNameForm : public Form {
private:
TextBox^ textBox;
NameList^ nameList;
public:
AddNameForm(NameList^ nameList) {
this->nameList = nameList;
InitializeComponents();
}
void InitializeComponents() {
Text = "Додати ім'я";
Size = Drawing::Size(300, 150);
MinimumSize = Size;
Label^ label = gcnew Label();
label->Text = "Введіть ім'я:";
label->Location = Drawing::Point(10, 20);
label->AutoSize = true;
textBox = gcnew TextBox();
textBox->Location = Drawing::Point(10, 40);
textBox->Size = Drawing::Size(200, 20);
Button^ addButton = gcnew Button();
addButton->Text = "Додати";
addButton->Location = Drawing::Point(10, 70);
addButton->Size = Drawing::Size(75, 23);
addButton->Click += gcnew EventHandler(this, &AddNameForm::AddButtonClick);
Button^ cancelButton = gcnew Button();
cancelButton->Text = "Скасувати";
cancelButton->Location = Drawing::Point(100, 70);
cancelButton->Size = Drawing::Size(75, 23);
cancelButton->DialogResult = DialogResult::Cancel
Объяснение: