C#winforms上的folderbrowserdialog
作者:互联网
我在winform中使用folderBrowserDialog.
我需要默认或初始路径作为网络位置.
例如:
folderBrowserDialog1.SelectedPath = @"\\server1\foo\bar\";
这是行不通的.我的系统在正确的网络上,并且能够通过浏览器访问目录并运行命令.
这是非功能吗?还是有解决方法?
如果有人可以引导我,我将不胜感激!
谢谢,
伊瓦
解决方法:
以我的经验,.NET始终因UNC路径而失败.有时它起作用,有时却不起作用.我敢肯定有一个很好的解释,但是在很早的时候,我搜索了并且没有找到答案.
与其解决这个问题,不如说我只是采取了这样的策略:最好自己映射一个驱动器,然后在完成代码后断开连接. (如果找到答案,我会很想知道为什么会这样,但是由于我有一个可行的解决方案,因此我不太在意自己进行研究.)它对我们100%的时间都有效,并且很容易.我创建了一个用于执行此操作的类,因为这是我们商店中的常见任务.
我不知道您是否对此想法持开放态度,但是如果您有兴趣并且还没有代码,我们的例程将粘贴在下面.检查打开的驱动器号,然后映射它,然后在完成后断开连接,这将是相当简单的.
public static class NetworkDrives
{
public static bool MapDrive(string DriveLetter, string Path, string Username, string Password)
{
bool ReturnValue = false;
if(System.IO.Directory.Exists(DriveLetter + ":\\"))
{
DisconnectDrive(DriveLetter);
}
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "net.exe";
p.StartInfo.Arguments = " use " + DriveLetter + ": " + Path + " " + Password + " /user:" + Username;
p.Start();
p.WaitForExit();
string ErrorMessage = p.StandardError.ReadToEnd();
string OuputMessage = p.StandardOutput.ReadToEnd();
if (ErrorMessage.Length > 0)
{
throw new Exception("Error:" + ErrorMessage);
}
else
{
ReturnValue = true;
}
return ReturnValue;
}
public static bool DisconnectDrive(string DriveLetter)
{
bool ReturnValue = false;
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "net.exe";
p.StartInfo.Arguments = " use " + DriveLetter + ": /DELETE";
p.Start();
p.WaitForExit();
string ErrorMessage = p.StandardError.ReadToEnd();
string OuputMessage = p.StandardOutput.ReadToEnd();
if (ErrorMessage.Length > 0)
{
throw new Exception("Error:" + ErrorMessage);
}
else
{
ReturnValue = true;
}
return ReturnValue;
}
}
标签:folderbrowserdialog,c,net,winforms 来源: https://codeday.me/bug/20191105/1998566.html