pragma once Hard / Занятие 10
.docРабота с меню и диалоговыми окнами
Добавьте в форму текстовое поле (TextBox), установите у него свойство Multiline равным True (текст может располагаться в нескольких строках) и растяните элемент на всю форму.
Для создания меню поместите в форму компонент MenuStrip. Значок компонента будет расположен под формой, а в самой форме появится полоса, где будут расположены команды. Создайте пункт меню «Файл» и 3 пункта подменю «Открыть», «Сохранить» и «Выход».
Добавьте в форму элементы openFileDialog и saveFileDialog.
Чтобы добавить обработчики событий, выполните двойной щелчок на пункте меню.
void Запись()
{
System::IO::StreamWriter^ X = //поток для записи
gcnew IO::StreamWriter(saveFileDialog1->FileName, false,
System::Text::Encoding::GetEncoding(1251));
//1 параметр - полный путь к файлу для записи
//2 параметр определяет, что данные перезаписываются (false) или добавляются(true)
//3 параметр определяет кодировку (1251 - поддержка русских букв)
X->Write(textBox1->Text); //запись в файл
X->Close();
textBox1->Modified=false; //изменений в textBox1 нет
}
private: System::Void выходToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
this->Close(); //вызывает событие формы FormClosing
}
private: System::Void открытьToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
openFileDialog1->ShowDialog();
if(openFileDialog1->FileName!=nullptr) {
System::IO::StreamReader^ Z = //поток для считывания
gcnew IO::StreamReader(openFileDialog1->FileName,
System::Text::Encoding::GetEncoding(1251));
textBox1->Text = Z->ReadToEnd();
Z->Close();
}
}
private: System::Void сохранитьToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
if(saveFileDialog1->ShowDialog() == Windows::Forms::DialogResult::OK)
Запись();
}
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
openFileDialog1->FileName = "";
openFileDialog1->Filter =
"Текстовые файлы (*.txt)|*.txt|All files (*.*)|*.*";
saveFileDialog1->Filter =
"Текстовые файлы (*.txt)|*.txt|All files (*.*)|*.*";
}
//выполняется при закрытии формы в том числе с помощью кнопки и Alt+F4
private: System::Void Form1_FormClosing(System::Object^ sender, System::Windows::Forms::FormClosingEventArgs^ e) {
if (textBox1->Modified == false) return; //текст не изменен
System::Windows::Forms::DialogResult R;
R = MessageBox::Show("Сохранить изменения?",
"Редактор", MessageBoxButtons::YesNoCancel,
MessageBoxIcon::Exclamation);
switch (R){
case System::Windows::Forms::DialogResult::No: //не сохранять
return;
case System::Windows::Forms::DialogResult::Cancel: //передумал
e->Cancel=true;
break;
case System::Windows::Forms::DialogResult::Yes:
if(saveFileDialog1->ShowDialog() == Windows::Forms::DialogResult::OK)
{Запись(); return;}
else e->Cancel=true; //передумал выходить
}
}