home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Freelog 116
/
FreelogNo116-JuilletSeptembre2013.iso
/
Systeme
/
SyMenu
/
SyMenu.exe
/
FolderBrowserDialogEx.cs
next >
Wrap
Text File
|
2011-06-11
|
7KB
|
178 lines
// FolderBrowserDialogEx.cs
//
// A replacement for the builtin System.Windows.Forms.FolderBrowserDialog class.
// This one includes an edit box, and also displays the full path in the edit box.
//
// based on code from http://support.microsoft.com/default.aspx?scid=kb;[LN];306285
//
// 20 Feb 2009
//
// ========================================================================================
// Example usage:
//
// string _folderName = "c:\\dinoch";
// private void button1_Click(object sender, EventArgs e)
// {
// _folderName = (System.IO.Directory.Exists(_folderName)) ? _folderName : "";
// var dlg1 = new Ionic.Utils.FolderBrowserDialogEx
// {
// Description = "Select a folder for the extracted files:",
// ShowNewFolderButton = true,
// ShowEditBox = true,
// //NewStyle = false,
// SelectedPath = _folderName,
// ShowFullPathInEditBox= false,
// };
// dlg1.RootFolder = System.Environment.SpecialFolder.MyComputer;
//
// var result = dlg1.ShowDialog();
//
// if (result == DialogResult.OK)
// {
// _folderName = dlg1.SelectedPath;
// this.label1.Text = "The folder selected was: ";
// this.label2.Text = _folderName;
// }
// }
//
namespace Ionic.Utils
{
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.ComponentModel;
using System.Security.Permissions;
using System.Security;
using System.Threading;
//[Designer("System.Windows.Forms.Design.FolderBrowserDialogDesigner, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"), DefaultEvent("HelpRequest"), SRDescription("DescriptionFolderBrowserDialog"), DefaultProperty("SelectedPath")]
public class FolderBrowserDialogEx : System.Windows.Forms.CommonDialog
{
private static readonly int MAX_PATH = 260;
// Fields
private PInvoke.BrowseFolderCallbackProc _callback;
private string _descriptionText;
private Environment.SpecialFolder _rootFolder;
private string _selectedPath;
private bool _selectedPathNeedsCheck;
private bool _showNewFolderButton;
private bool _showEditBox;
private bool _showBothFilesAndFolders;
private bool _newStyle = true;
private bool _showFullPathInEditBox = true;
private bool _dontIncludeNetworkFoldersBelowDomainLevel;
private int _uiFlags;
private IntPtr _hwndEdit;
private IntPtr _rootFolderLocation;
// Events
//[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
public new event EventHandler HelpRequest
{
add
{
base.HelpRequest += value;
}
remove
{
base.HelpRequest -= value;
}
}
// ctor
public FolderBrowserDialogEx()
{
this.Reset();
}
// Factory Methods
public static FolderBrowserDialogEx PrinterBrowser()
{
FolderBrowserDialogEx x = new FolderBrowserDialogEx();
// avoid MBRO comppiler warning when passing _rootFolderLocation as a ref:
x.BecomePrinterBrowser();
return x;
}
public static FolderBrowserDialogEx ComputerBrowser()
{
FolderBrowserDialogEx x = new FolderBrowserDialogEx();
// avoid MBRO comppiler warning when passing _rootFolderLocation as a ref:
x.BecomeComputerBrowser();
return x;
}
// Helpers
private void BecomePrinterBrowser()
{
_uiFlags += BrowseFlags.BIF_BROWSEFORPRINTER;
Description = "Select a printer:";
PInvoke.Shell32.SHGetSpecialFolderLocation(IntPtr.Zero, CSIDL.PRINTERS, ref this._rootFolderLocation);
ShowNewFolderButton = false;
ShowEditBox = false;
}
private void BecomeComputerBrowser()
{
_uiFlags += BrowseFlags.BIF_BROWSEFORCOMPUTER;
Description = "Select a computer:";
PInvoke.Shell32.SHGetSpecialFolderLocation(IntPtr.Zero, CSIDL.NETWORK, ref this._rootFolderLocation);
ShowNewFolderButton = false;
ShowEditBox = false;
}
private class CSIDL
{
public const int PRINTERS = 4;
public const int NETWORK = 0x12;
}
private class BrowseFlags
{
public const int BIF_DEFAULT = 0x0000;
public const int BIF_BROWSEFORCOMPUTER = 0x1000;
public const int BIF_BROWSEFORPRINTER = 0x2000;
public const int BIF_BROWSEINCLUDEFILES = 0x4000;
public const int BIF_BROWSEINCLUDEURLS = 0x0080;
public const int BIF_)wNewFoldeqcDL.PRLOWDOMAIN;
2 public const int BIF_)wNewFoldEDITBOX;
1 public const int BIF_)wNewFoldNEWDIALOGSTYLE;
4 public const int BIF_)wNewFoldNONEWFOLDERBUTTON;
2 public const int BIF_BROWSEINCRETURNFSANCESTOR0;
08 public const int BIF_BROWSEINCRETURNONLYFSDIR0;
01 public const int BIF_BROWSEINCSHAREABLE;
8 public const int BIF_BROWSEINCSTATUSTEX0;
public const int NETWORK =EINCUAHx20;
1 public const int BIF_BROWSEINCVALIDATE;
2 public const int BIF_BROWSEINCNOTRANSLATETARGET0;
4 publi private class BrolderBrowseFlags
orton = Mes
/ {
public cos
mes
/ FROM path otFoldb
{
public const int BIF_BROWSEFFM_INITIALIZED;
1 public const int BIF_BROWSEFFM_SELCHANGED;
2 public const int BIF_)wNewFFFM_VALIDATEFA400DA;
3 public const int BIF_)wNewFFFM_VALIDATEFA400DW public const int NETWORK =EFFM_IUNKNOWN;
5; private cccccs
mes
/ TO path otFoldb
{
public const int BIF_BROWSEFFM_SET0TATUSTEX0;
46 public const int NETWORK =EFFM_ENABLEOK;
465 public const int NETWORK =EFFM_SET0ELECTIONA;
466 public const int NETWORK =EFFM_SET0ELECTIONW;
467 publi private class BroRK =wserDialogEx(roc _calero, CS
,oRK =msg,rootFolditBram,rootFoldipData {
FolderBroswitch (msg) FolderBro FolderBrooooocequags
orton = Mes
/ .EFFM_INITIALIZED: FolderBrooooooooot ==tFoldeathNeedsChec.Length !
) FolderBrooooooooo FolderBroooooeLlrITIonsN!nt BIF_BROWSEINCVALIDATE;
2 poooot ==tFoldeF