async void OpenFileDialogAsync(string[] openFileParams) { OpenFileDialog dialog = new OpenFileDialog { Title = "Title", Filters = new List <FileDialogFilter>() }; if (openFileParams != null && openFileParams.Length > 1) { FileDialogFilter fileFilter = new FileDialogFilter(); fileFilter.Extensions.Add(openFileParams[0]); fileFilter.Name = openFileParams[1]; dialog.Filters.Add(fileFilter); } string[] files = await dialog.ShowAsync(Application.Current.MainWindow); if (files != null && files.Length > 0) { if (openFileParams != null && openFileParams.Length > 0) { SaveFileSettings(files[0], openFileParams[openFileParams.Length - 1]); ArcInstallerSettings.Instance.Save(); } } }
private async void LoadPattern(object sender, RoutedEventArgs e) { var filter = new FileDialogFilter { Extensions = new List <string>() { "rle", "vaca" }, Name = "Patrones", }; var dlg = new OpenFileDialog { Title = "Abrir patrón", AllowMultiple = false, Filters = new List <FileDialogFilter>() { filter }, }; var files = await dlg.ShowAsync(this); try{ var file = files[0]; conway.LoadFile(file); iterations.Text = $"Iteraciones: {conway.Iterations}"; alive.Text = $"Celdas vivas: {conway.LiveCells}"; this.Renderer.AddDirty(conway); }catch (Exception) { } }
private async void SavePattern(object sender, RoutedEventArgs e) { if (!conway.HasMatrix()) { return; } var filter = new FileDialogFilter { Extensions = new List <string>() { "vaca" }, Name = "Patrones", }; var dlg = new SaveFileDialog { Title = "Guardar patrón", Filters = new List <FileDialogFilter>() { filter }, }; var file = await dlg.ShowAsync(this); if (String.IsNullOrEmpty(file)) { return; } if (!file.EndsWith(".vaca")) { file += ".vaca"; } conway.SaveFile(file); }
public async void ExportClick(object sender, RoutedEventArgs e) { TextBoxModel context = DataContext as TextBoxModel; //Dialog SaveFileDialog dialog = new SaveFileDialog(); FileDialogFilter filter = new FileDialogFilter { Extensions = new string[] { "bin", }.ToList(), Name = "bin files" }; List <FileDialogFilter> list = new List <FileDialogFilter> { filter }; dialog.Filters = list; string fileName = await dialog.ShowAsync(this); //Get ouf of the method if the user exits the dialog if (fileName is null) { return; } await File.WriteAllBytesAsync(fileName, Bytes.ToArray()); Console.WriteLine("finished"); }
public ReferenceDialog(IController controller, string[] refs) { InitializeComponent(); _controller = controller; _dllFileFilter = new FileDialogFilter("Dll Files (*.dll)", new[] { ".dll" }); _allFileFilter = new FileDialogFilter("All Files (*.*)", new[] { ".*" }); var assemblyColumn = new GridColumn(); assemblyColumn.HeaderText = "Assembly"; assemblyColumn.DataCell = new TextBoxCell("Assembly"); assemblyColumn.Sortable = true; grid1.Columns.Add(assemblyColumn); var locationColumn = new GridColumn(); locationColumn.HeaderText = "Location"; locationColumn.DataCell = new TextBoxCell("Location"); locationColumn.Sortable = true; grid1.Columns.Add(locationColumn); grid1.DataStore = _dataStore = new SelectableFilterCollection <RefItem>(grid1); foreach (var rf in refs) { _dataStore.Add(new RefItem(Path.GetFileName(rf), _controller.GetFullPath(rf))); } }
public void InsertFilter(int index, FileDialogFilter filter) { var gtkFilter = new Gtk.FileFilter(); gtkFilter.Name = filter.Name; foreach (var extension in filter.Extensions) { gtkFilter.AddPattern(extension); } var filters = new List <Gtk.FileFilter>(Control.Filters); if (index < filters.Count) { for (int i = 0; i < filters.Count; i++) { Control.RemoveFilter(filters[i]); } filters.Insert(index, gtkFilter); for (int i = 0; i < filters.Count; i++) { Control.AddFilter(filters[i]); } } else { Control.AddFilter(gtkFilter); } }
public async Task OpenProject(Window parentWindow) { InfoText.NewMessage("Opening new project"); var openFileDialog = new OpenFileDialog { Directory = Environment.OSVersion.Platform == PlatformID.Unix || Environment.OSVersion.Platform == PlatformID.MacOSX ? Environment.GetEnvironmentVariable("HOME") : Environment.ExpandEnvironmentVariables("%HOMEDRIVE%%HOMEPATH%"), Title = "Select PDF score", AllowMultiple = false }; var filter = new FileDialogFilter { Extensions = new List <string> { "xml" }, Name = "XML files" }; openFileDialog.Filters = new List <FileDialogFilter> { filter }; var result = await openFileDialog.ShowAsync(parentWindow); try { Score.ImportScore(result[0]); SaveEnable = true; InfoText.NewMessage($"Project {result[0]} restored !"); } catch (FileNotFoundException) {} }
public async Task ImportPDF(Window parentWindow) { InfoText.NewMessage("Importing PDF"); var openFileDialog = new OpenFileDialog { Directory = Environment.OSVersion.Platform == PlatformID.Unix || Environment.OSVersion.Platform == PlatformID.MacOSX ? Environment.GetEnvironmentVariable("HOME") : Environment.ExpandEnvironmentVariables("%HOMEDRIVE%%HOMEPATH%"), Title = "Select PDF score", AllowMultiple = false }; var filter = new FileDialogFilter { Extensions = new List <string> { "pdf" }, Name = "PDF files" }; openFileDialog.Filters = new List <FileDialogFilter> { filter }; var result = await openFileDialog.ShowAsync(parentWindow); Score.SetNewScore(result[0]); InfoText.Empty(); }
private async Task ImportArchiveAsync() { var extensions = PlatformHelper.GetFactorioArchiveExtensions(); var filter = new FileDialogFilter(); filter.Extensions.AddRange(extensions); filter.Name = (string)App.Current.Locales.GetResource("ArchiveFileType"); var ofd = new OpenFileDialog { AllowMultiple = false }; ofd.Filters.Add(filter); var paths = await ofd.ShowAsync(App.Current.MainWindow); if (!(paths is null) && (paths.Length > 0)) { var file = new FileInfo(paths[0]); if (file.Exists) { var vm = new FactorioInstanceViewModel(Program.Manager, Program.Locations, false); _instances.Add(vm); if (!await vm.TryCreateExtractAsync(file)) { _instances.Remove(vm); } } } }
/// <summary> /// Names the with extension. /// </summary> /// <param name="path">The path.</param> /// <param name="defaultExtension">The default extension.</param> /// <param name="filter">The filter.</param> /// <returns>System.String.</returns> private string NameWithExtension(string path, string defaultExtension, FileDialogFilter filter) { var name = Path.GetFileName(path); if (name != null && !name.Contains(".")) { if (filter?.Extensions?.Count > 0) { if (defaultExtension != null && filter.Extensions.Contains(defaultExtension)) { return(path + "." + defaultExtension.TrimStart('.')); } var ext = filter.Extensions.FirstOrDefault(x => x != "*"); if (ext != null) { return(path + "." + ext.TrimStart('.')); } } if (defaultExtension != null) { path += "." + defaultExtension.TrimStart('.'); } } return(path); }
public XwtView() { GenerateUI(); // DialogFilters MonoGameContentProjectFileFilter = new FileDialogFilter("MonoGame Content Build Projects (*.mgcb)", "*.mgcb"); XnaContentProjectFileFilter = new FileDialogFilter("XNA Content Projects (*.contentproj)", "*.contentproj"); AllFilesFilter = new FileDialogFilter("All Files (*.*)", "*.*"); }
private static string ToFileType(FileDialogFilter filter) { var fileMasks = filter.Extensions.Select(i => "*." + i).ToArray(); var fileTypeLabel = filter.Name + " (" + string.Join(", ", fileMasks) + ")"; var fileTypeExtensions = string.Join(";", fileMasks); var fileType = fileTypeLabel + "|" + fileTypeExtensions; return(fileType); }
/// <summary> /// Adds a file filter choice to the dialog. /// </summary> /// <param name="name">Name of the filter, for example: "Text Files".</param> /// <param name="extensions">File extensions to filter for, for example: "txt", "log".</param> public void AddFilter(string name, params string[] extensions) { var filter = new FileDialogFilter { Name = name, Extensions = new List <string> (extensions) }; filters.Add(filter); }
private async void ButtonHandler_LoadFile(object sender, RoutedEventArgs e) { // Open file dialog and allow only middleware libraries extension to be loaded. // That is: DLL on Win, SO on Linux and DYLIB on macOS OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.AllowMultiple = false; List <String> allowedExtensions = new List <String>(); allowedExtensions.Add("so"); allowedExtensions.Add("dll"); allowedExtensions.Add("dylib"); FileDialogFilter filter = new FileDialogFilter(); filter.Extensions = allowedExtensions; filter.Name = "PKCS11 Middleware"; List <FileDialogFilter> filters = new List <FileDialogFilter>(); filters.Add(filter); openFileDialog.Filters = new List <FileDialogFilter>(filters); string[] fileSelected = await openFileDialog.ShowAsync(this); if (fileSelected.Length == 0) { Console.WriteLine("Canceled file selection"); } else { try { var loadingTask = Task.Run(() => PKCS11Lister.Instance.Initialize(fileSelected[0])); LoadingBox = new LoadingBox("Please wait", "Loading PKCS11 middleware...", "resm:PKCS11Explorer.Assets.baseline_hourglass_orange_black_18dp.png"); LoadingBox.ShowDialog(this); Console.WriteLine("Selected file: " + fileSelected[0]); Console.WriteLine("Loading informations, please wait."); await loadingTask; LoadingBox.Close(); Console.WriteLine("Loaded PKCS11 middleware."); Task.Run(() => { PKCS11Lister.Instance.ListForTreeview(); }); } catch (Exception exception) { LoadingBox.Close(); Console.WriteLine("Problem with PKCS11: " + exception.Message); Console.WriteLine("Stacktrace: " + exception.StackTrace); if (Tree.Children?.Count > 0) { Tree.Children?.Clear(); } var dialog = new DialogBox("Error", exception.Message + "\nDid you select a valid PKCS11 library?", "resm:PKCS11Explorer.Assets.baseline_highlight_off_red_18dp.png", "Ok"); await dialog.ShowDialog(this); } } }
public MainWindow() { Build(); _urmFileFilter = new FileDialogFilter("URM Files (*.urm)", "*.urm"); _txtFileFilter = new FileDialogFilter("Text Files (*.txt)", "*.txt"); _anyFilesFilter = new FileDialogFilter("All Files (*.*)", "*"); MessageDialog.RootWindow = this; ReloadMenuAndTitle(); }
public ManagedFileChooserFilterViewModel(FileDialogFilter filter) { Name = filter.Name; if (filter.Extensions.Contains("*")) { return; } _extensions = filter.Extensions?.Select(e => "." + e.ToLowerInvariant()).ToArray(); }
public MainWindow() { InitializeComponent(); #if DEBUG this.AttachDevTools(); #endif // Get controls this.TextBoxVideoPath = this.FindControl <TextBox>("TextBoxVideoPath"); this.ButtonOpenVideo = this.FindControl <Button>("ButtonOpenVideo"); this.ButtonStartVideo = this.FindControl <Button>("ButtonStartVideo"); this.ButtonStopVideo = this.FindControl <Button>("ButtonStopVideo"); this.ImageVideo = this.FindControl <Image>("ImageVideo"); this.TextBlockFrameNo = this.FindControl <TextBlock>("TextBlockFrameNo"); this.TextBlockLog = this.FindControl <TextBlock>("TextBlockLog"); // Set properties this.TextBoxVideoPath.IsReadOnly = true; // Set event this.ButtonOpenVideo.Click += ButtonOpenVideo_Clicked; this.ButtonStartVideo.Click += ButtonStartVideo_Clicked; this.ButtonStopVideo.Click += ButtonStopVideo_Clicked; // Timer settings this.Timer = new DispatcherTimer(); this.Timer.Interval = new System.TimeSpan(0, 0, 0, 0, 33); // 30 fps this.Timer.IsEnabled = false; this.Timer.Tick += Timer_Tick; // OpenFileDialog settings FileDialogFilter f1 = new FileDialogFilter(); f1.Name = "動画ファイル (*.avi,*.mov,*.mp4)"; f1.Extensions = new System.Collections.Generic.List <string>(); f1.Extensions.Add("avi"); f1.Extensions.Add("mov"); f1.Extensions.Add("mp4"); FileDialogFilter f2 = new FileDialogFilter(); f2.Name = "すべてのファイル (*.*)"; f2.Extensions.Add("*.*"); this.OpenVideoDialog = new OpenFileDialog(); this.OpenVideoDialog.Filters.Add(f1); this.OpenVideoDialog.Filters.Add(f2); // Bitmap this.bitmap = new WriteableBitmap(new PixelSize(this.width, this.height), new Vector(this.dpi, this.dpi), Avalonia.Platform.PixelFormat.Rgba8888); this.data = new byte[this.width * this.height * 4]; // RGBA 4 channels // Bind source this.ImageVideo.Width = this.width; this.ImageVideo.Height = this.height; this.ImageVideo.Source = this.bitmap; }
public override async void SaveImage() { SaveFileDialog savefile = new SaveFileDialog(); savefile.InitialFileName = "ScottPlot.png"; var filtersPNG = new FileDialogFilter(); filtersPNG.Name = "PNG Files"; filtersPNG.Extensions.Add("png"); var filtersJPEG = new FileDialogFilter(); filtersJPEG.Name = "JPG Files"; filtersJPEG.Extensions.Add("jpg"); filtersJPEG.Extensions.Add("jpeg"); var filtersBMP = new FileDialogFilter(); filtersBMP.Name = "BMP Files"; filtersBMP.Extensions.Add("bmp"); var filtersTIFF = new FileDialogFilter(); filtersTIFF.Name = "TIF Files"; filtersTIFF.Extensions.Add("tif"); filtersTIFF.Extensions.Add("tiff"); var filtersGeneric = new FileDialogFilter(); filtersGeneric.Name = "All Files"; filtersGeneric.Extensions.Add("*"); savefile.Filters.Add(filtersPNG); savefile.Filters.Add(filtersJPEG); savefile.Filters.Add(filtersBMP); savefile.Filters.Add(filtersTIFF); savefile.Filters.Add(filtersGeneric); Task <string> filenameTask = savefile.ShowAsync((Window)view.GetVisualRoot()); await filenameTask; if (filenameTask.Exception != null) { return; } if ((filenameTask.Result ?? "") != "") { plt.SaveFig(filenameTask.Result); } }
private async void btSaveSnapshot_Click(object sender, RoutedEventArgs e) { var sfd = new SaveFileDialog(); sfd.InitialFileName = "image.jpg"; sfd.DefaultExtension = ".jpg"; sfd.Directory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "VisioForge"); var exts = new string[] { "jpg", "bmp", "png", "gif", "tiff" }; foreach (var extension in exts) { var filter = new FileDialogFilter(); filter.Name = extension.ToUpperInvariant(); filter.Extensions.Add(extension); sfd.Filters.Add(filter); } var filename = await sfd.ShowAsync(this); if (!string.IsNullOrEmpty(filename)) { var ext = Path.GetExtension(filename).ToLowerInvariant(); switch (ext) { case ".bmp": await VideoCapture1.Frame_SaveAsync(filename, ImageFormat.Bmp, 0); break; case ".jpg": await VideoCapture1.Frame_SaveAsync(filename, ImageFormat.Jpeg, 85); break; case ".gif": await VideoCapture1.Frame_SaveAsync(filename, ImageFormat.Gif, 0); break; case ".png": await VideoCapture1.Frame_SaveAsync(filename, ImageFormat.Png, 0); break; case ".tiff": await VideoCapture1.Frame_SaveAsync(filename, ImageFormat.Tiff, 0); break; } } }
public MainWindow() { InitializeComponent(); Instance = this; _contextMenu = new ContextMenu(); projectControl.SetContextMenu(_contextMenu); _mgcbFileFilter = new FileDialogFilter("MonoGame Content Build Project (*.mgcb)", new[] { ".mgcb" }); _allFileFilter = new FileDialogFilter("All Files (*.*)", new[] { ".*" }); _xnaFileFilter = new FileDialogFilter("XNA Content Projects (*.contentproj)", new[] { ".contentproj" }); }
private void CmdOpenSongExecutablePath_Click(object sender, EventArgs e) { FileDialogFilter filter = new FileDialogFilter("OpenSong Executable", "OpenSong.exe", "OpenSong"); using (var openFileDialog = new OpenFileDialog()) { openFileDialog.Filters.Add(filter); if (openFileDialog.ShowDialog(this) == DialogResult.Ok) { txtOpenSongExecutablePath.Text = openFileDialog.FileName; } } }
/// <summary> /// Saves the current identity as a PDF file. /// </summary> public async void SaveAsPdf() { SaveFileDialog sfd = new SaveFileDialog(); FileDialogFilter fdf = new FileDialogFilter { Name = "PDF files (.pdf)", Extensions = new List <string> { "pdf" } }; sfd.Title = _loc.GetLocalizationValue("SaveIdentityDialogTitle"); sfd.InitialFileName = $"{(string.IsNullOrEmpty(this.Identity.IdentityName) ? "Identity" : this.Identity.IdentityName)}.pdf"; sfd.Filters.Add(fdf); var file = await sfd.ShowAsync(_mainWindow); if (string.IsNullOrEmpty(file)) { return; } try { PdfHelper.CreateIdentityDocument(file, this.Identity, _blocksToExport); ProcessStartInfo psi = new ProcessStartInfo { FileName = file, UseShellExecute = true }; Process.Start(psi); } catch (TypeInitializationException ex) { Log.Error($"{ex.GetType().ToString()} was thrown while creating an identity pdf: {ex.Message}"); await new MessageBoxViewModel(_loc.GetLocalizationValue("ErrorTitleGeneric"), _loc.GetLocalizationValue("MissingLibGdiPlusErrorMessage"), MessageBoxSize.Small, MessageBoxButtons.OK, MessageBoxIcons.ERROR) .ShowDialog(this); } catch (Exception ex) { Log.Error($"{ex.GetType().ToString()} was thrown while creating an identity pdf: {ex.Message}"); await new MessageBoxViewModel(_loc.GetLocalizationValue("ErrorTitleGeneric"), ex.Message, MessageBoxSize.Small, MessageBoxButtons.OK, MessageBoxIcons.ERROR) .ShowDialog(this); } }
private async void ExportClick(object sender, RoutedEventArgs e) { SaveFileDialog dialog = new SaveFileDialog(); FileDialogFilter filter = new FileDialogFilter(); filter.Extensions.Add("png"); filter.Name = "PNG 图片文件"; dialog.Filters.Add(filter); string filename = await dialog.ShowAsync(this); if (filename == null) { return; } nbitmap.Save(filename, ImageFormat.Png); }
private async void ExportClick(object sender, RoutedEventArgs e) { SaveFileDialog dialog = new SaveFileDialog(); FileDialogFilter filter = new FileDialogFilter(); filter.Extensions.Add("db"); filter.Name = "数据库文件"; dialog.Filters.Add(filter); string filename = await dialog.ShowAsync(this); if (filename == null) { return; } Restore.db.Write(filename); }
private List <FileDialogFilter> RegisterSupportExtensions() { var suppotedFileExtensions = new List <FileDialogFilter>(); var excelExtension = new FileDialogFilter { Name = "Microsoft Excel 2007-2020", Extensions = new List <string> { ReportExtensions.xlsx } }; suppotedFileExtensions.Add(excelExtension); return(suppotedFileExtensions); }
public async void ImportClick(object sender, RoutedEventArgs e) { //Dialog OpenFileDialog dialog = new OpenFileDialog(); FileDialogFilter filter = new FileDialogFilter { Extensions = new[] { "bin" }.ToList(), Name = ".bin file" }; List <FileDialogFilter> list = new List <FileDialogFilter> { filter }; dialog.Filters = list; string[] fileNames = await dialog.ShowAsync(this); string output = ""; //Escape the method if the user exits the window if (fileNames.Length <= 0) { return; } int prevLength = Bytes.Count; //Read bytes and change output byte[] tempBytes = await File.ReadAllBytesAsync(fileNames[0]); AddBytes = tempBytes.ToList(); //If there is already data, then show the window that asks the pointer location if (prevLength > 0) { originalByteCount = Bytes.Count; Bytes.AddRange(tempBytes); } else { Bytes.AddRange(tempBytes); originalByteCount = tempBytes.Length; } ((TextBoxModel)DataContext).InputText += tempBytes.Aggregate("", (current, b) => current + b.ToString("X2") + " "); }
public MainWindowBase(string[] args) { this.Build(); ReloadTitle(); _spritefontFileFilter = new FileDialogFilter("Spritefont Files (*.spritefont)", "*.spritefont"); _anyFilesFilter = new FileDialogFilter("All Files (*.*)", "*.*"); MessageDialog.RootWindow = this; this.Closed += OnWindowClosed; if (args != null && args.Length > 0) { sfwidget1.Open(string.Join(" ", args)); ReloadTitle(); } }
private List <FileDialogFilter> ParseFilters(string filter) { var parts = filter.Split('|'); var filters = new List <FileDialogFilter>(); if (parts.Length % 2 == 0) { for (int i = 0; i < parts.Length; i += 2) { var f = new FileDialogFilter(); f.Name = parts[i]; f.Extensions = new List <string> { parts[i + 1] }; filters.Add(f); } } return(filters); }
public async void ImportClick(object sender, RoutedEventArgs e) { OpenFileDialog dialog = new OpenFileDialog(); FileDialogFilter filter = new FileDialogFilter(); filter.Extensions = new string[] { "bin", "txt", "" }.ToList(); filter.Name = "Name"; List <FileDialogFilter> list = new List <FileDialogFilter>(); list.Add(filter); dialog.Filters = list; string[] fileNames = await dialog.ShowAsync(this); (DataContext as TextBoxModel).InputText = await new StreamReader(fileNames[0]).ReadToEndAsync(); }
public async void ExportClick(object sender, RoutedEventArgs e) { TextBoxModel context = (DataContext as TextBoxModel); SaveFileDialog dialog = new SaveFileDialog(); FileDialogFilter filter = new FileDialogFilter(); filter.Extensions = new string[] { "bin", "txt", "" }.ToList(); filter.Name = "Name"; List <FileDialogFilter> list = new List <FileDialogFilter>(); list.Add(filter); dialog.Filters = list; string fileName = await dialog.ShowAsync(this); //Save as txt file. if (fileName.Contains(".txt")) { using (StreamWriter writer = new StreamWriter(fileName)) { await writer.WriteAsync(context.OutputText); await writer.FlushAsync(); } } //Save as .bin file else if (fileName.Contains(".bin")) { using (StreamWriter writer = new StreamWriter(fileName)) { for (int i = 0; i < context.OutputText.Length - 1; i += 2) { await writer.WriteAsync((char)Convert.ToByte($"{context.OutputText[i]}{context.OutputText[i + 1]}", 16)); } await writer.FlushAsync(); } } }
private async Task <string> SaveVideoFileDialogAsync() { SaveFileDialog sfd = new SaveFileDialog(); sfd.InitialFileName = "video.mp4"; sfd.DefaultExtension = ".mp4"; var exts = new string[] { "mp4", "avi", "wmv", "wma", "mp3", "ogg" }; foreach (var extension in exts) { var filter = new FileDialogFilter(); filter.Name = extension.ToUpperInvariant(); filter.Extensions.Add(extension); sfd.Filters.Add(filter); } return(await sfd.ShowAsync(this)); }
void AddRemoveItem(FileDialogFilter filter, bool added) { CheckNotRunning (); }
/// <summary> /// Shows the dialog. /// </summary> public bool Run(WindowFrame parentWindow) { try { running = true; Backend.Initialize (filters, multiselect, initialFileName); if (!string.IsNullOrEmpty (currentFolder)) Backend.CurrentFolder = currentFolder; if (activeFilter != null) Backend.ActiveFilter = activeFilter; if (!string.IsNullOrEmpty (title)) Backend.Title = title; return Backend.Run ((IWindowFrameBackend)backendHost.ToolkitEngine.GetSafeBackend (parentWindow)); } finally { currentFolder = Backend.CurrentFolder; activeFilter = Backend.ActiveFilter; fileName = Backend.FileName; fileNames = Backend.FileNames; currentFolder = Backend.CurrentFolder; running = false; Backend.Cleanup (); } }
void BtnClicked(object sender, EventArgs e) { if (FileSelectionMode == FileSelectionMode.Open) dialog = new OpenFileDialog (); else dialog = new SaveFileDialog (); try { foreach (var f in filters) dialog.Filters.Add (f); if (!string.IsNullOrEmpty (currentFolder)) dialog.CurrentFolder = currentFolder; if (activeFilter != null) dialog.ActiveFilter = activeFilter; if (!string.IsNullOrEmpty (title)) dialog.Title = title; if (dialog.Run (ParentWindow)) FileName = dialog.FileName; } finally { currentFolder = dialog.CurrentFolder; activeFilter = dialog.ActiveFilter; dialog.Dispose (); dialog = null; } }