Генератор цветов Уроки C++ Уроки Windows forms Учебники по программированию Уроки HTML Уроки CSS Готовые задания Исходники Полезные программы
регистрация доменов

Дешёвые домены


Уроки 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;
}
}

};
}



Результат:






Следующий урок >>