How to specifiy rootfolder with openFileDialog - c#

With folderBrowseDialog you can show the top level of the folder which will be shown initially. However that feature is not there on openFileDialog.
I want to let the user open files from a specific folder only. How do I specify the folder?

Just set the openFileDialog.InitialDirectory
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.InitialDirectory = #"C:\";
openFileDialog.ShowDialog();

Set InitialDirectory property:
OpenFileDialog dialog = new OpenFileDialog();
dialog.InitialDirectory = #"D:\SomeFolder";
dialog.ShowDialog();

Gawjus, answering your question "How can I restrict the user from accessing other folders? can I lock them?", you can use Environment Special Folder as per code below, but as far I know you cannot define a custom folder, there are some options available. Another way it's to create an UserControl that list only files from a specific folder. Doing that you can have more control how it will behave.
ofd.RootFolder = Environment.SpecialFolder.MyDocuments;

Related

How to choose a file in an already opened FileDialog

I want to choose a file from an already opened OpenFileDialog which is shown by the browser.
I want to use code similar to the following example:
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
dialog.InitialDirectory = "C:\\";
The problem is, that I cant access dialog. I can't reference it.
Edit:
I use the selenium-webdriver for automated testing. But the fileDialog is presented by the website I want to test.
without an OpenFileDialog you say?
you have a few options for this..
one being a method i used here -
https://github.com/Ricky310711/RDExplorer
You would need to create a new panel with a ListView and populate it with local folders and files, add a double click event handler to select the item selected by storing it in a string.

C# WPF OpenFileDialog initial Focus in the list of files

I have some basic code for opening an OpenFileDialog.
OpenFileDialog dlg = new OpenFileDialog();
dlg.DefaultExt = ".csv";
dlg.Filter = "FileType|*.csv";
dlg.Multiselect = false;
bool? result = dlg.ShowDialog();
It works fine, but my Windows 7 users are complaining that the mouse scroll wheel doesn't scroll the list of files. I think the reason for this is that the initial focus is on the text field for the file name. If I click on the list of files, they become scrollable. How can I set the initial focus in the OpenFileDialog to be the list of files instead of the textbox?

Limit a folder browser dialog to only folders containing specific files

I have a folder browser dialog (simple enough) but I only want it to be 'ok' if the folder contains files of a certain extension. What I have so far:
FolderBrowserDialog pDlg = new FolderBrowserDialog();
if (pDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
if (Directory.GetFiles(pDlg.SelectedPath, "*.ext").Length > 0)
{
SrcDir.Text = pDlg.SelectedPath;
}
else
{
DBox.Items.Insert(0, "Not a suitable folder");
}
}
This works in limiting the population of the textbox SrcDir if the selected folder does not contain any of the right sort of files (*.ext). It would be preferable if I could disable the 'ok' button when the folder is selected in the dialog if GetFiles(..).Length == 0 so an unsuitable folder just cannot be selected; as you cannot 'see' the files in the FolderBrowserDialog it's kind of hard for the user to know if it is the right folder, so by changing the enabled state of the OK button would indicate to the user if the folder is suitable.
I could use a OpenFileDialog to browse for one file in the directory and then use FileInfo.DirectoryName to extract the folder that its in, but I am under pressure not to do it that way (others think it's sloppy).
I am fairly sure this can't be done with a standard FolderBrowserDialog; is there another in-built dialog class that I can control this behavior or should I create a new form with a DirectorySearcher or similar TreeView and .ShowDialog() on a custom dialog form?

Setting the root folder of folder browser dialog

Hello I'm trying to set the root folder of a folder browser dialog. The RootFolder property of the FolderBrowserDialog can be set to an element of Environment.SpecialFolder enum.
FolderBrowserDialog folderDlg = new FolderBrowserDialog();
folderDlg.RootFolder = Environment.SpecialFolder.MyDocuments;
if (folderDlg.ShowDialog() == DialogResult.OK) {
...
}
Problem is i dont want to set the root folder to some default. I want it to depend on some user selection.
Ive read about setting the selectedPath property before the dialog is shown. Therefore i tried this code
folderDlg.SelectedPath = pathSelectedByUser;
where pathSelectedByUser is a string like "C:\Temp\Backup". This is almost doing it, but it only opens the Temp directory and selects the Backup directory and doesnt open the Backup directory.
Can anyone help?
Setting the SelectedPath before showing the dialog will force the selected path to be highlighted and the file tree expanded to show the selected level folder. Unfortunate the scroll will not navigate till the selection (centralizing it in the window would be expected).
As you said, the selected path will not be opened (expanded to show subfolders), but there is a workaround. If you press '+' sign it will do the job, so a SendKeys.SendWait might be used as explained in:
Why FolderBrowserDialog dialog does not scroll to selected folder?
Regards,

Browse to a Directory and have the Path stored in a string (C#)

I'm trying to make this program in C# using WPF in Visual Studio. This is basically what it has to do.
When a button called "Browse" is clicked on the main form, it will open up a new form/window that let's the user browse to any directory that he chooses. After he selects the folder and clicks "Open" (or some other button on that form), the path of that directory, for example, "C:\temp" will be stored in a string variable so it can used later.
My first problem is, what do I write in the even handler of the "Browse" button that will open up a window that let's the user browse and select a folder? Is there a default window I can use or do I have to create a new form for it? Please note, the user has to select a folder, not a file like the default "Open" window.
Secondly, how do I reference a string variable so that it stores the path of the directory that the user selected?
The type you are looking for is the OpenFileDialog
http://msdn.microsoft.com/en-us/library/system.windows.forms.openfiledialog.aspx
The basic usage is the following
using (FileDialog fileDialog = new OpenFileDialog()) {
if (DialogResult.Ok == fileDialog.ShowDialog()) {
string fileName = fileDialog.FileName;
...
}
}
EDIT
Comments clarified OP is looking to open a directory vs. a file. For this you need the FolderBrowseDialog
var dialog = new System.Windows.Forms.FolderBrowserDialog();
System.Windows.Forms.DialogResult result = dialog.ShowDialog();
For choosing directory you should use FolderBrowserDialog. It's a control from WinForms. WPF doesn't have it's own.
For example:
var dialog = new FolderBrowserDialog();
var result = dialog.ShowDialog();
if (result == DialogResult.OK)
// ...
Don't forget to add reference to the System.Windows.Forms.
Simply do this on Button Click
FileDialog fileDialog = new OpenFileDialog();
fileDialog.ShowDialog();
folderpathTB.Text = fileDialog.FileName;
(folderpathTB is name of TextBox where I wana put the file path, OR u can assign it to a string variable too)

Categories

Resources