В заметке рассматривается пример использования окна сохранения или открытия файла или папки с использованием GTK# Mono .NET.
Теоретически, данная процедура может быть выполнена с помощью контрола FileChooserButton, однако, на практике бывает не все так просто. Причиной этому является очевидный баг в работе контрола, который существует на данный момент и описывается ниже.
В случае использования File Chooser Button в Mono GTK# возможна проблема с изменением типа диалогового окна.
По умолчанию свойство Action данного контрола установлено в значение "Open", что является аналогом OpenFileDialog в C# Windows Forms .NET. В отличии от WindowsForms здесь нет отдельных контролов для сохранения или открытия файлов и если вам необходимо реализовать аналог SaveFileDialog в Mono GTK#, то вым необходимо изменить свойство Action с Open на Save. Однако ни в конструкторе ни в коде этот элемент управления не может изменить свое значение. Оно просто не меняется и всегда остается в значении Open.
Решение проблемы
Им является использование обычной кнопки и вызова блока кода, который будет вызывать соответствующее окно самостоятельно. В этом случае все отработает корректно:
Gtk.FileChooserDialog fc= new Gtk.FileChooserDialog("Сохранение файла", this, FileChooserAction.Save, "Отмена", ResponseType.Cancel, "Сохранить", ResponseType.Accept);
if (fc.Run() == (int)ResponseType.Accept)
{ /*Обработка */ }
fc.Destroy();
Изменяя параметр FileChooserAction можно управлять поведением вызываемого окна - получая различные по функционалу окна - оно открытия или сохранения файла в GTK# или создания или выбора папки.
|