Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get file path from OpenFileDialog and FolderBrowserDialog?

Hey there i started learning C# a few days ago and I'm trying to make a program that copies and pastes files (and replaces if needed) to a selected directory but I don't know how to get the directory and file paths from the openfiledialog and folderbrowserdialog

what am I doing wrong?

Here's the code:

namespace filereplacer {     public partial class Form1 : Form     {         public Form1()         {             InitializeComponent();         }          private void direc_Click(object sender, EventArgs e)         {             string folderPath = "";             FolderBrowserDialog directchoosedlg = new FolderBrowserDialog();             if (directchoosedlg.ShowDialog() == DialogResult.OK)             {                 folderPath = directchoosedlg.SelectedPath;             }         }          private void choof_Click(object sender, EventArgs e)         {              OpenFileDialog choofdlog = new OpenFileDialog();             choofdlog.Filter = "All Files (*.*)|*.*";             choofdlog.FilterIndex = 1;              choofdlog.Multiselect = true;             choofdlog.ShowDialog();         }          private void replacebtn_Click(object sender, EventArgs e)         {           // This is where i'm having trouble         }          public static void ReplaceFile(string FileToMoveAndDelete, string FileToReplace, string BackupOfFileToReplace)         {             File.Replace(FileToMoveAndDelete, FileToReplace, BackupOfFileToReplace, false);         }     } 
like image 999
user3728981 Avatar asked Jun 27 '14 10:06

user3728981


People also ask

How do I get the selected file from OpenFileDialog box?

OpenFileDialog component opens the Windows dialog box for browsing and selecting files. To open and read the selected files, you can use the OpenFileDialog. OpenFile method, or create an instance of the System. IO.


2 Answers

For OpenFileDialog:

OpenFileDialog choofdlog = new OpenFileDialog(); choofdlog.Filter = "All Files (*.*)|*.*"; choofdlog.FilterIndex = 1; choofdlog.Multiselect = true;  if (choofdlog.ShowDialog() == DialogResult.OK)     {          string sFileName = choofdlog.FileName;      string[] arrAllFiles = choofdlog.FileNames; //used when Multiselect = true            } 

For FolderBrowserDialog:

FolderBrowserDialog fbd = new FolderBrowserDialog(); fbd.Description = "Custom Description";   if (fbd.ShowDialog() == DialogResult.OK) {     string sSelectedPath = fbd.SelectedPath; } 

To access selected folder and selected file name you can declare both string at class level.

namespace filereplacer {    public partial class Form1 : Form    {       string sSelectedFile;       string sSelectedFolder;        public Form1()       {          InitializeComponent();       }        private void direc_Click(object sender, EventArgs e)       {          FolderBrowserDialog fbd = new FolderBrowserDialog();          //fbd.Description = "Custom Description"; //not mandatory           if (fbd.ShowDialog() == DialogResult.OK)                      sSelectedFolder = fbd.SelectedPath;          else                sSelectedFolder = string.Empty;           }        private void choof_Click(object sender, EventArgs e)       {          OpenFileDialog choofdlog = new OpenFileDialog();          choofdlog.Filter = "All Files (*.*)|*.*";          choofdlog.FilterIndex = 1;          choofdlog.Multiselect = true;           if (choofdlog.ShowDialog() == DialogResult.OK)                               sSelectedFile = choofdlog.FileName;                      else              sSelectedFile = string.Empty;              }        private void replacebtn_Click(object sender, EventArgs e)       {           if(sSelectedFolder != string.Empty && sSelectedFile != string.Empty)           {                //use selected folder path and file path           }       }       .... } 

NOTE:

As you have kept choofdlog.Multiselect=true;, that means in the OpenFileDialog() you are able to select multiple files (by pressing ctrl key and left mouse click for selection).

In that case you could get all selected files in string[]:

At Class Level:

string[] arrAllFiles; 

Locate this line (when Multiselect=true this line gives first file only):

sSelectedFile = choofdlog.FileName;  

To get all files use this:

arrAllFiles = choofdlog.FileNames; //this line gives array of all selected files 
like image 126
Hassan Avatar answered Oct 13 '22 23:10

Hassan


Use the Path class from System.IO. It contains useful calls for manipulating file paths, including GetDirectoryName which does what you want, returning the directory portion of the file path.

Usage is simple.

string directoryPath = System.IO.Path.GetDirectoryName(choofdlog.FileName); 
like image 20
Moez Rebai Avatar answered Oct 13 '22 21:10

Moez Rebai