WPF中实现点击 . . . 按钮后选择文件夹作为主目录功能;亲测有用
(下图是我用WPF做的FTP服务器和FTP上传下载器的一部分)
// 选择文件夹private void btnSelectRootDirect_Click(object sender, RoutedEventArgs e)
{
System.Windows.Forms.FolderBrowserDialog openFileDialog =
new System.Windows.Forms.FolderBrowserDialog()
/*注意,FolderBrowserDialog前面的命名空间不能删除,此处一定要手动引入
System.Window.Forms空间,否则你使用默认的DialogResult会发现没有OK属性*/
if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
txtFtpRoot.Text = openFileDialog.SelectedPath
}
}
注意:在wpf中手动引入System.Window.Forms时报错,原因如下
在C# Winform窗体应用中默认引入System.Window.Forms,
但是wpf中没有没有默认引入System.Window.Forms;需要添加引用
解决方案:项目右侧--解决资源管理器---引用---右键--添加引用---在.NET下拉框找---找到System.Windows.Forms---点击确定然后--vs的菜单栏第五个--生成----重新生成解决方案--就可以了。
注意:此时如果程序中包含MessageBox,则引入System.Windows.Forms时MessageBox会报错(因为System.Windows和System.Windows.Forms两个命名空间下都有MessageBox类,如果不指明该类是哪个空间下的,程序就会摸不着头脑),改为System.Windows.MessageBox即可
详见代码和注释:
System.Windows.Forms.OpenFileDialog openFile = new System.Windows.Forms.OpenFileDialog()openFile.CheckFileExists = true//检查文件是否存在
openFile.CheckPathExists = true//检查路径是否存在
openFile.Multiselect = true//是否允许多选,false表示单选
openFile.InitialDirectory = "C:\\"//设置打开时的默认路径,我这里设置为C盘根目录
string filter = "txt,doc"
filter = filter.TrimEnd(',')
if (filter.Equals(""))
{
filter = "*"
}
filter = filter.Replace(",", "*.")
filter = "*." + filter
openFile.Filter = "Txt files (" + filter + ")|" + filter + "|All files (*.*)|*.*"//这里设置的是文件过滤器,比如选了txt文件,那别的文件就看不到了
if (openFile.ShowDialog() == System.Windows.Forms.DialogResult.OK)//打开文件选择器,并按下选择按钮
{
String[] names = openFile.FileNames
String message = "已选择的文件如下:\r\n"
for (int i = 0 i < names.length i++)
{
message += names + "\r\n"
}
MessageBox.show(message)
}
另外,你说不能多选,这个多选时要按住Ctrl才能选中多个文件,或者按住鼠标左键滑动以选定多个目标才行。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)