'常量声明
Private Const MAX_PATH = 260
Private Const BIF_USENEWUI = &H40
'浏览文件夹对话框
Private Type BrowseInfo
hwndOwner As Long
pIDLRoot As Long
pszDisplayName As Long
lpszTitle As Long
ulFlags As Long
lpfnCallback As Long
lParam As Long
iImage As Long
End Type
Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)
Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long
'浏览文件夹(选择一个目录)
'参数说明:
' lngHwnd 调用的窗口句柄
' strPrompt 显示在对话框上的提示
'返回值:
' 成功 完整目录
' 失败 空字符串("")
'例子:
' strDir = BrowseForFolder(Me.Hwnd,"请选择一个目录")
Public Function BrowseForFolder(ByVal lngHwnd As Long, _
ByVal strPrompt As String) As String
Dim iNull As Integer
Dim lpIDList As Long
Dim lResult As Long
Dim sPath As String
Dim udtBI As BrowseInfo
With udtBI
.hwndOwner = lngHwnd
.lpszTitle = lstrcat(strPrompt, "")
.ulFlags = BIF_USENEWUI
End With
lpIDList = SHBrowseForFolder(udtBI)
If lpIDList Then
sPath = String$(MAX_PATH, 0)
lResult = SHGetPathFromIDList(lpIDList, sPath)
Call CoTaskMemFree(lpIDList)
iNull = InStr(sPath, vbNullChar)
If iNull Then
sPath = Left$(sPath, iNull - 1)
End If
End If
If Right$(sPath, 1) <> "\" And sPath <> "" Then
sPath = sPath & "\"
End If
BrowseForFolder = sPath
End Function
Private Const MAX_PATH = 260
Private Const BIF_USENEWUI = &H40
'浏览文件夹对话框
Private Type BrowseInfo
hwndOwner As Long
pIDLRoot As Long
pszDisplayName As Long
lpszTitle As Long
ulFlags As Long
lpfnCallback As Long
lParam As Long
iImage As Long
End Type
Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)
Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long
'浏览文件夹(选择一个目录)
'参数说明:
' lngHwnd 调用的窗口句柄
' strPrompt 显示在对话框上的提示
'返回值:
' 成功 完整目录
' 失败 空字符串("")
'例子:
' strDir = BrowseForFolder(Me.Hwnd,"请选择一个目录")
Public Function BrowseForFolder(ByVal lngHwnd As Long, _
ByVal strPrompt As String) As String
Dim iNull As Integer
Dim lpIDList As Long
Dim lResult As Long
Dim sPath As String
Dim udtBI As BrowseInfo
With udtBI
.hwndOwner = lngHwnd
.lpszTitle = lstrcat(strPrompt, "")
.ulFlags = BIF_USENEWUI
End With
lpIDList = SHBrowseForFolder(udtBI)
If lpIDList Then
sPath = String$(MAX_PATH, 0)
lResult = SHGetPathFromIDList(lpIDList, sPath)
Call CoTaskMemFree(lpIDList)
iNull = InStr(sPath, vbNullChar)
If iNull Then
sPath = Left$(sPath, iNull - 1)
End If
End If
If Right$(sPath, 1) <> "\" And sPath <> "" Then
sPath = sPath & "\"
End If
BrowseForFolder = sPath
End Function
解决方案 »
- Timeout 时间已到。在操作完成之前超时时间已过或服务器未响应。
- DropDownList 问题
- VSS2005外网访问内网的服务器
- 关于异步等待的问题,求求大家指点下
- C#网站怎么调用百度Google等搜索器搜索啊
- dropdownlist 前台设置了onchange js事件,如何在cs文件中设置某项选中而触发onchange事件?
- Asp.Net微型服务器,只有一个文件,并且才300K大小|建议从事Asp.Net开发的博友们人手一份
- C#程序默认路径怎么获取~!?
- 圆心、圆半径、圆上任一点坐标,DrawPolygon画圆内接正多边形
- textbox的问题。请帮忙,谢谢
- 高分求助!大家来看一下,这个api怎么调?
- C#开发的程序是否只能在安装.net框架的服务器上运行?
using System.Windows.Forms.Design;
using System.Windows.Forms;
namespace Dialogs
{ /// <summary>
/// Use this class to display the browse for folder dialog box.
/// Browse for a specific kind of object (Folders, Printers, Computers, etc).
/// </summary>
public class FolderBrowser : FolderNameEditor
{
/// <summary>
/// Types of objects you can look for.
/// </summary>
public enum fbStyles
{
BrowseForComputer = FolderNameEditor.FolderBrowserStyles.BrowseForComputer,
BrowseForEverything = FolderNameEditor.FolderBrowserStyles.BrowseForEverything,
BrowseForPrinter = FolderNameEditor.FolderBrowserStyles.BrowseForPrinter,
RestrictToDomain = FolderNameEditor.FolderBrowserStyles.RestrictToDomain,
RestrictToFilesystem = FolderNameEditor.FolderBrowserStyles.RestrictToFilesystem,
RestrictToSubfolders = FolderNameEditor.FolderBrowserStyles.RestrictToSubfolders,
ShowTextBox = FolderNameEditor.FolderBrowserStyles.ShowTextBox ,
} /// <summary>
///
/// </summary>
public enum fbFolder
{
Desktop = FolderNameEditor.FolderBrowserFolder.Desktop,
Favorites = FolderNameEditor.FolderBrowserFolder.Favorites,
MyComputer = FolderNameEditor.FolderBrowserFolder.MyComputer,
MyDocuments = FolderNameEditor.FolderBrowserFolder.MyDocuments,
MyPictures = FolderNameEditor.FolderBrowserFolder.MyPictures,
NetAndDialUpConnections = FolderNameEditor.FolderBrowserFolder.NetAndDialUpConnections,
NetworkNeighborhood = FolderNameEditor.FolderBrowserFolder.NetworkNeighborhood,
Printers = FolderNameEditor.FolderBrowserFolder.Printers,
Recent = FolderNameEditor.FolderBrowserFolder.Recent,
SendTo = FolderNameEditor.FolderBrowserFolder.SendTo,
StartMenu = FolderNameEditor.FolderBrowserFolder.StartMenu,
Templates = FolderNameEditor.FolderBrowserFolder.Templates
} //
private FolderNameEditor.FolderBrowser m_obBrowser = null;
public FolderBrowser()
{
m_obBrowser = new FolderNameEditor.FolderBrowser();
} /// <summary>
/// 默认路径.
/// </summary>
public Dialogs.FolderBrowser.fbFolder StartLocation
{
set
{
switch (value)
{
case fbFolder.Desktop:
m_obBrowser.StartLocation = FolderBrowserFolder.Desktop;
break;
case fbFolder.Favorites:
m_obBrowser.StartLocation = FolderBrowserFolder.Favorites;
break;
case fbFolder.MyComputer:
m_obBrowser.StartLocation = FolderBrowserFolder.MyComputer;
break;
case fbFolder.MyDocuments:
m_obBrowser.StartLocation = FolderBrowserFolder.MyDocuments;
break;
case fbFolder.MyPictures:
m_obBrowser.StartLocation = FolderBrowserFolder.MyPictures;
break;
case fbFolder.NetAndDialUpConnections:
m_obBrowser.StartLocation = FolderBrowserFolder.NetAndDialUpConnections;
break;
case fbFolder.NetworkNeighborhood:
m_obBrowser.StartLocation = FolderBrowserFolder.NetworkNeighborhood;
break;
case fbFolder.Printers:
m_obBrowser.StartLocation = FolderBrowserFolder.Printers;
break;
case fbFolder.Recent:
m_obBrowser.StartLocation = FolderBrowserFolder.Recent;
break;
case fbFolder.SendTo:
m_obBrowser.StartLocation = FolderBrowserFolder.SendTo;
break;
case fbFolder.StartMenu:
m_obBrowser.StartLocation = FolderBrowserFolder.StartMenu;
break;
case fbFolder.Templates:
m_obBrowser.StartLocation = FolderBrowserFolder.Templates;
break; }
}
get
{
return (fbFolder)this.m_obBrowser.StartLocation;
}
}
/// <summary>
/// The type of object to look for.
/// </summary>
public Dialogs.FolderBrowser.fbStyles Style
{
set
{
switch (value)
{
case fbStyles.BrowseForComputer:
m_obBrowser.Style = FolderBrowserStyles.BrowseForComputer;
break;
case fbStyles.BrowseForEverything:
m_obBrowser.Style = FolderBrowserStyles.BrowseForEverything;
break;
case fbStyles.BrowseForPrinter:
m_obBrowser.Style = FolderBrowserStyles.BrowseForPrinter;
break;
case fbStyles.RestrictToDomain:
m_obBrowser.Style = FolderBrowserStyles.RestrictToDomain;
break;
case fbStyles.RestrictToFilesystem:
m_obBrowser.Style = FolderBrowserStyles.RestrictToFilesystem;
break;
case fbStyles.RestrictToSubfolders:
m_obBrowser.Style = FolderBrowserStyles.RestrictToSubfolders;
break;
case fbStyles.ShowTextBox:
m_obBrowser.Style = FolderBrowserStyles.ShowTextBox;
break; }
}
get
{
return (fbStyles)this.m_obBrowser.Style;
}
} /// <summary>
/// 显示对话框的那串文字.
/// </summary>
public string Description
{
set
{
m_obBrowser.Description = value;
}
get
{
return this.m_obBrowser.Description;
}
} /// <summary>
/// 返回路径名.
/// </summary>
public string DirectoryPath
{
get
{
try
{
return this.m_obBrowser.DirectoryPath;
}
catch
{
return null;
}
}
} /// <summary>
/// 显示浏览对话框.
/// </summary>
/// <returns>
/// </returns>
public DialogResult ShowDialog()
{
return m_obBrowser.ShowDialog();
}
}
}
下面是使用示例
private void button1_Click(object sender, System.EventArgs e)
{
Dialogs.FolderBrowser Fbrowser = new Dialogs.FolderBrowser();
Fbrowser.Description="请选择目标目录";
Fbrowser.StartLocation = Dialogs.FolderBrowser.fbFolder.Desktop;
Fbrowser.Style = Dialogs.FolderBrowser.fbStyles.BrowseForEverything;
if (Fbrowser.ShowDialog()==DialogResult.OK)
{
txtPath.Text = Fbrowser.DirectoryPath;
}
}
看看是不是你需要的。
提示说找不到类型或命中空间???为什么???
他不仅需要命名空间System.Windows.Forms.Design.
还需要程序集:System.Design.dll你在“项目”中"添加引用”