Прежде чем увлекаться взломом диалогового окна, сначала рассмотрим простое решение, использующее событие FileOk. Создайте форму с именем, скажем, frmPreview. Дайте ему конструктор, который принимает строку. Для воспроизведения файла вам понадобится кнопка «Отмена», кнопка «ОК» и код.
Показать эту форму следующим образом:
var dlg = new OpenFileDialog();
// Set other dlg properties...
dlg.FileOk += (s, cancel) => {
using (var prev = new frmPreview(dlg.FileName)) {
if (prev.ShowDialog() != DialogResult.OK) cancel.Cancel = true;
}
};
if (dlg.ShowDialog(this) == DialogResult.OK) {
// use the file
//...
}
Теперь, когда пользователь нажимает кнопку Открыть, появляется форма предварительного просмотра. Пользователь может нажать Отмена и выбрать другой файл из диалогового окна.