如何打开文件夹对话框浏览器

2020-09-02 03:12发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


如何实现功能,当您按下某些用户按钮控件时,文件夹浏览器对话框打开,如图所示。 基本上如何获得object(C#)文件夹浏览器对话框?

openfolderbrowser.jpg (133.8 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


如何实现功能,当您按下某些用户按钮控件时,文件夹浏览器对话框打开,如图所示。 基本上如何获得object(C#)文件夹浏览器对话框?

openfolderbrowser.jpg (133.8 kB)
付费偷看设置
发送
2条回答
Alawn_Xu
1楼 · 2020-09-02 03:43.采纳回答

嗨Евгений

处理此功能的类:

公共枚举DialogType
     {
         保存,
         打开,
         夹
     };


     公共类SelectFileDialog
     {
         私有ManualResetEvent shutdownEvent =新的ManualResetEvent(false);
         公共字符串SelectedFile {get; 私人套装;  }
         公共字符串SelectedFolder {get; 私人套装;  }


         私人字符串文件夹,文件,过滤器;
         私有DialogType类型;


         公共SelectFileDialog(字符串文件夹,字符串文件,字符串过滤器,
             DialogType类型)
         {
             if(文件夹== null ||文件== null ||过滤器== null)
                 抛出新的ArgumentException(Messages.AllArgumentsMandatory);


             this.folder =文件夹;
             this.file =文件;
             this.filter =过滤器;
             this.type =类型;
         }


         私有void InternalSelectFileDialog()
         {
             var form = new System.Windows.Forms.Form();


             form.TopMost = true;
             form.Height = 0;
             form.Width = 0;
             form.WindowState = FormWindowState.Minimized;
             form.Visible = true;


             开关(类型)
             {
                 情况DialogType.FOLDER:
                     FolderDialog(form);
                     打破;
                 案例DialogType.OPEN:
                     OpenDialog(窗体);
                     打破;
                 情况DialogType.SAVE:
                     SaveDialog(form);
                     打破;
             }
             shutdownEvent.Set();
         }


         私有void FolderDialog(System.Windows.Forms.Form表单)
         {
             FolderBrowserDialog对话框= new FolderBrowserDialog();


             dialog.Description = Messages.FolderDialogTitle;
             dialog.RootFolder = Environment.SpecialFolder.MyComputer;
            //------------------------------------------------  ----------------//
             如果(dialog.ShowDialog()== DialogResult.OK)
             {
                 form.Close();
                 SelectedFolder = dialog.SelectedPath;
             }
             其他
             {
                 form.Close();
                 SelectedFolder ="";
             }
         }


         私有void OpenDialog(System.Windows.Forms.Form表单)
         {
             OpenFileDialog对话框= new OpenFileDialog();
             OpenOrSaveDialog(对话框,形式);
         }


         私有void SaveDialog(System.Windows.Forms.Form表单)
         {
             SaveFileDialog对话框=新的SaveFileDialog();
             OpenOrSaveDialog(对话框,形式);
         }


         私有void OpenOrSaveDialog(FileDialog对话框,System.Windows.Forms.Form窗体)
         {
             dialog.Title = Messages.FileDialogTitle;
             dialog.Filter =过滤器; //" TXT文件(* .txt)| * .txt |所有文件(*。*)| *。*";
             dialog.InitialDirectory =文件夹;
             dialog.FileName =文件;
            //------------------------------------------------  ----------------//
             如果(dialog.ShowDialog()== DialogResult.OK)
             {
                 form.Close();
                 SelectedFile = dialog.FileName;
             }
             其他
             {
                 form.Close();
                 SelectedFile ="";
             }
         }


         公共无效Open()
         {
             线程t =新线程(新ThreadStart(this.InternalSelectFileDialog));
             t.SetApartmentState(ApartmentState.STA);
             t.Start();
             shutdownEvent.WaitOne();
         }
     }
 

如何使用此类的示例:

 SelectFileDialog对话框= new SelectFileDialog(" C:\\","",
                 " | * .xml",DialogType.SAVE);
             dialog.Open();
             如果(!string.IsNullOrEmpty(dialog.SelectedFile))
             {

             } 

此代码来自dover项目: http://efpiva.github.io /

希望有帮助。

亲切的问候,

迭戈兄弟

我是小鹏鹏啊
2楼-- · 2020-09-02 03:56

谢谢您的解决方案。 作为C#的初学者,我一直在寻找切实可行的解决方案。

一周热门 更多>