编程语言
首页 > 编程语言> > C#winforms上的folderbrowserdialog

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