Уроки Windows Forms C++/C#
Открытие и запись текстового файла в MVS C++В этом уроке будет показан пример создания простого текстового редактора, поэтому обязательно посмотрите предыдущий урок. В данной программе мы будем открывать какой-то уже созданный текстовый файл и редактировать его или же сами писать текст и сохранять его, как новый текстовый файл в нужную вам папку. Ещё один явный признак текстового редактора – это если вы что-то написали и нажимайте крестик чтобы выйти – при этом программа спрашивает: “Сохранить изменения”. Создание такого текстового редактора как раз и будет рассматриваться в этом уроке. Для этого понадобяться следующие элементы: "MenuStrip", "textBox", "openFiledialog", "saveFiledialog". Работа с последними двумя рассматривается в “этом уроке”. Перетащите все эти элементы на форму, назовите заголовок "MenuStrip" "Файл" создайте в нём три пункта: "Открыть", "Сохранить как", "Выход", привяжите "textBox" ко всем сторонам формы, если не знаете включите "Multeline" и "ScrollBars->Vertical", как делать всё выше описанное посмотрите этот урок.Оформление программы:

В коде программы будут созданы "MyReader" и "MyWriter" , с помощью которых программа будет читать и записывать текст в файл. По мимо этого в коде создаётся кодировка, благодаря которой программа будет понимать русский текст. У формы нужно вызвать событие "FormClousing", о том как вызвать событие у элемента рассказывается в этом уроке. Код программы:
C++
#pragma endregion private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { this->Text = "Текстовый редактор"; openFileDialog1->FileName = "D:\\ВУЗ\\Text2.txt"; openFileDialog1->Filter = "Текстовые файлы (*.txt)|*.txt|All files (*.*)|*.*"; saveFileDialog1->Filter = "Текстовые файлы (*.txt)|*.txt|All files (*.*)|*.*"; } private: System::Void открытьToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { openFileDialog1->ShowDialog(); if (openFileDialog1->FileName == nullptr) return; try { auto MyReader = gcnew IO::StreamReader(openFileDialog1->FileName, System::Text::Encoding::GetEncoding(1251)); textBox1->Text= MyReader->ReadToEnd(); MyReader->Close(); } catch (IO::FileNotFoundException^ Ситуация) { MessageBox::Show(Ситуация->Message + "\nФайл не найден", "Ошибка", MessageBoxButtons::OK, MessageBoxIcon::Exclamation); } catch (Exception^ Ситуация) { MessageBox::Show(Ситуация->Message, "Ошибка", MessageBoxButtons::OK, MessageBoxIcon::Exclamation); } } private: System::Void сохранитьКакToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { saveFileDialog1->FileName = openFileDialog1->FileName; if (saveFileDialog1->ShowDialog() == Windows::Forms::DialogResult::OK) Save(); } void Save() { try { // Создание экземпляра StreamWriter для записи в файл: auto MyWriter = gcnew IO::StreamWriter(saveFileDialog1->FileName, false, System::Text::Encoding::GetEncoding(1251)); MyWriter->Write(textBox1->Text); MyWriter->Close(); textBox1->Modified = false; } catch (Exception^ Ситуация) { MessageBox::Show(Ситуация->Message, "Ошибка", MessageBoxButtons::OK, MessageBoxIcon::Exclamation); } } private: System::Void выходToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { this->Close(); } private: System::Void Form1_FormClosing(System::Object^ sender, System::Windows::Forms::FormClosingEventArgs^ e) { if (textBox1->Modified == false) return; auto MeBox = MessageBox::Show("Текст был изменён. \nСохранить изменения?", "Простой редактор", MessageBoxButtons::YesNoCancel, MessageBoxIcon::Exclamation); if (MeBox == Windows::Forms::DialogResult::No) return; if (MeBox == Windows::Forms::DialogResult::Cancel) e->Cancel = true; if (MeBox == Windows::Forms::DialogResult::Yes) { if (saveFileDialog1->ShowDialog() == Windows::Forms::DialogResult::OK) { Save(); return; } else e->Cancel = true; } } }; }
Результат:
Следующий урок >>