/// <summary> /// Opens a OpenFileDialog window and returns a DialogResult if blocking otherwise dialog.ok /// </summary> /// <param name="fbd">Reference to a OpenFileDialog</param> /// <param name="onfinish">If a delegate is passed, then it doesn't block.</param> /// <returns></returns> public static DialogResult OpenFileDialog(ref OpenFileDialog fbd, onDialogFinished onfinish = null) { if (!Directory.Exists(fbd.InitialDirectory)) { if (Directory.Exists(Path.Combine(Environment.CurrentDirectory, fbd.InitialDirectory))) { fbd.InitialDirectory = Path.Combine(Environment.CurrentDirectory, fbd.InitialDirectory); } else { fbd.InitialDirectory = Environment.CurrentDirectory; } } DialogResult dr = new DialogResult(); Oper o = new Oper(ref fbd, ref dr); Thread thread = new Thread(() => OpenFileDialog_DoWork(o)); thread.SetApartmentState(ApartmentState.STA); thread.Start(); if (onfinish != null) { return(DialogResult.OK); } while (!o._isFinished) { Thread.Sleep(100); } return(o._dr); }
/// <summary> /// Opens a "FileDialog" prompt window and returns the Dialog Result if blocking, otherwise DialogResult.OK. /// Call will block if a delegate isn't passed. /// </summary> /// <param name="fd">Reference of a FileDialog </param> /// <param name="onfinish">If a delegate is passed, then it doesn't block.</param> /// <returns></returns> public static DialogResult FileDialog(ref FileDialog fd, onDialogFinished onfinish = null) { DialogResult dr = new DialogResult(); Oper o = new Oper(ref fd, ref dr) {_callback = onfinish}; Thread thread = new Thread(() => FileDialog_DoWork(o)); thread.SetApartmentState(ApartmentState.STA); thread.Start(); if (onfinish != null) return DialogResult.OK; while (!o._isFinished) Thread.Sleep(100); return o._dr; }
/// <summary> /// Opens a SaveFileDialog and returns a Dialogresult if blocking otherwise a dialog.ok /// </summary> /// <param name="fbd">Reference to a SaveFileDialog</param> /// <param name="onfinish">If a delegate is passed, then it doesn't block.</param> /// <returns></returns> public static DialogResult SaveFileDialog(ref SaveFileDialog fbd, onDialogFinished onfinish = null) { DialogResult dr = new DialogResult(); Oper o = new Oper(ref fbd, ref dr); Thread thread = new Thread(() => SaveFileDialog_DoWork(o)); thread.SetApartmentState(ApartmentState.STA); thread.Start(); if (onfinish != null) { return(DialogResult.OK); } while (!o._isFinished) { Thread.Sleep(100); } return(o._dr); }
/// <summary> /// Opens a OpenFileDialog window and returns a DialogResult if blocking otherwise dialog.ok /// </summary> /// <param name="fbd">Reference to a OpenFileDialog</param> /// <param name="onfinish">If a delegate is passed, then it doesn't block.</param> /// <returns></returns> public static DialogResult OpenFileDialog(ref OpenFileDialog fbd, onDialogFinished onfinish = null) { if (!Directory.Exists(fbd.InitialDirectory)) { if (Directory.Exists(Path.Combine(Environment.CurrentDirectory, fbd.InitialDirectory))) fbd.InitialDirectory = Path.Combine(Environment.CurrentDirectory, fbd.InitialDirectory); else fbd.InitialDirectory = Environment.CurrentDirectory; } DialogResult dr = new DialogResult(); Oper o = new Oper(ref fbd, ref dr); Thread thread = new Thread(() => OpenFileDialog_DoWork(o)); thread.SetApartmentState(ApartmentState.STA); thread.Start(); if (onfinish != null) return DialogResult.OK; while (!o._isFinished) Thread.Sleep(100); return o._dr; }