Шаг 46.
Microsoft Visual C++ 2010. Начала.
Базовые компоненты. Компонент OpenFileDialog

    На этом шаге мы рассмотрим назначение, основные свойства и пример использования этого компонента.

    Компонент OpenFileDialog (рисунок 1) представляет собой диалоговое окно (диалог) Открыть.


Рис.1. Компонент OpenFileDialog

    Свойства компонента приведены в таблице 1.

Таблица 1. Свойства компонента OpenFileDialog
Свойство Описание
Title Текст в заголовке окна. Если значение свойства не задано, то в заголовке отображается текст Открыть
InitialDirectory Каталог, содержимое которого отображается при появлении диалога на экране
Filter Свойство задает один или несколько фильтров файлов. В окне отображаются только те файлы, имена которых соответствуют выбранному фильтру. Фильтр задается строкой вида Описание|Маска. Например, фильтр Текст|*.txt задает, что в окне диалога следует отображать только текстовые файлы. Фильтр может состоять из нескольких элементов, например: Текст|*.txt|Все файлы|*.*
FilterIndex Если фильтр состоит из нескольких элементов, например, Текст|*.txt|Все файлы|*.*, то значение свойства задает фильтр, который будет использоваться в момент появления диалога на экране
FileName Имя выбранного пользователем файла
RestoreDirectory Признак необходимости отображать содержимое каталога, указанного в свойстве InitialDirectory, при каждом появлении окна. Если значение свойства равно False, то при следующем появлении окна отображается содержимое каталога, выбранного пользователем в предыдущий раз

    Отображение диалога Открыть обеспечивает метод ShowDialog. Его значением является код клавиши, нажатием которой пользователь завершил диалог (закрыл окно).

    В качестве примера приведем фрагмент программы MEdit — функция обработки события Click на команде Открыть меню Файл.

    На рисунке 2 приведен внешний вид формы.


Рис.2. Внешний вид формы

    На нее мы добавили компонент textBox (имя textBox1), у которого установили следующие свойства:

.    .   .   .
private:
	String^ fn;         // имя файла
	bool textChanged;   // true - в текст внесены изменения

// выбор в меню Файл команды Открыть
private: System::Void toolStripMenuItem2_Click(System::Object^  sender, 
		System::EventArgs^  e) {
	
	System::Windows::Forms::DialogResult dr; 
	int r; 

	r = 0; //SaveText(); // сохранить текст, находящийся в поле компонента 
		// функция, которая будет использована в дальнейшем для 
		// сохранения предыдущего содержимого компонента

	if (r == 0) // если нечего сохранять...
	{ 
		openFileDialog1->FileName = String::Empty; 
		// отобразить диалог Открыть 
		dr = openFileDialog1->ShowDialog(); 
		if (dr == System::Windows::Forms::DialogResult::OK) 
		{ 
			fn = openFileDialog1->FileName; 
			// отобразить имя файла в заголовке окна 
			this->Text = fn; 
			try 
			{ 
				// считываем данные из файла 
				System::IO::StreamReader^ sr = 
				gcnew System::IO::StreamReader(fn); 
				textBox1->Text = sr->ReadToEnd(); 
				textBox1->SelectionStart = textBox1->TextLength; 
				sr->Close(); 
				textChanged = false; 
			} 
			catch ( System::IO::FileLoadException^ e) 
			{ 
				MessageBox::Show("Ошибка:\n" + e->Message, 
					"MEdit", 
					MessageBoxButtons::OK, 
					MessageBoxIcon::Error); 
			} 
		} 
	} 
}
Архив проекта можно взять здесь.

    На следующем шаге мы рассмотрим компонент SaveFileDialog.




Предыдущий шаг Содержание Следующий шаг