Уроки Windows Forms C++/C#
Создание базы данных элемент DataGrindView в MVS C++В этом уроке продемонстрировано создание телефонной книги – то есть базы данных. Если вы ещё не смотрели “предыдущий урок”, то обязательно его посмотрите, иначе вы ничего не сможете сделать. Суть данной программы следующая: на "Form1" находится тестовое поле, куда нужно ввести пароль, и кнопка, после нажатия которой программа проверяет введённый пароль. Если пароль admin то появиться вторая форма, где будет находится таблица и активная кнопка "Сохранить". В таблицу вводятся данные, нажимается кнопка – после чего, в папке проекта, создаётся документ baza.xml, в котором будут храниться данные, которые можно дополнять или удалять, сохраняя изменения. Если пользователь вводит пароль “reader”, то появляется вторая форма "form2" с той же таблицей и данными, но кнопка “Сохранить” не активна – пользователь может только просматривать данные, но не изменять. Если же пароль не верный –то появляется окошко "Incorrect password". Прежде, чем приступить к созданию программы – посмотрите этот урок, если ещё не смотрели. Создайте проект в приложении "Windows Forms": на "Form1" перенесите – "label", "textBox" и "button"; Добавьте новую форму "form2" и перенесите на неё – "DataGrindView" и "button". Виды форм программы:


Когда первая форма становится не видима, появляется вторая, но закрыв вторую форму первая не закроется. Поэтому, если вы проверяйте программу в компиляторе, а не запускаете отдельно, то просто перезаходите в компилятор, тогда проект будет закрываться. Если вы запускаете программу отдельно из папки "Debug" (.exe), то всё будет впорядке. Код программы:
Form1
#pragma once #include "form2.h" namespace BD_Number { using namespace System; . . . #pragma endregion private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { this->Text = "Вход в БД"; label1->Text = "Введите пароль"; button1->Text = "Ввод"; textBox1->PasswordChar = '*'; textBox1->TextAlign = HorizontalAlignment::Center; } private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { form2^ gform2 = gcnew form2; gform2->Show(); if (textBox1->Text == "reader") { gform2->Visible = true; this->Visible = false; gform2->button1->Enabled = false; } if (textBox1->Text == "admin") { gform2->Visible = true; this->Visible = false; gform2->button1->Enabled = true; } if (textBox1->Text != "reader" && textBox1->Text != "admin") { gform2->Visible = false; MessageBox::Show("Incorrect password!"); } } }; }
form2
. . } private: System::Windows::Forms::DataGridView^ dataGridView1; public: System::Windows::Forms::Button^ button1; protected: private: /// <summary> /// Требуется переменная конструктора. /// </summary> . . . #pragma endregion DataTable ^ Таблица; DataSet ^ ВводДанных; private: System::Void form2_Load(System::Object^ sender, System::EventArgs^ e) { this->Text = "Телефонная книга"; button1->Text = "Сохранить"; this->Visible = false; Таблица = gcnew DataTable(); ВводДанных = gcnew DataSet(); if (IO::File::Exists("baza.xml") == false) { dataGridView1->DataSource = Таблица; Таблица->Columns->Add("Имена"); Таблица->Columns->Add("Номера Телефонов"); ВводДанных->Tables->Add(Таблица); } else { ВводДанных->ReadXml("baza.xml"); String ^ СтрокаXML = ВводДанных->GetXml(); dataGridView1->DataMember = ("Название таблицы"); dataGridView1->DataSource = ВводДанных; } } private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { Таблица->TableName = "Название таблицы"; ВводДанных->WriteXml("baza.xml"); } }; }
Результат:
Следующий урок >>