Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#winforms上的FolderBrowser对话框_C#_.net_Winforms_Folderbrowserdialog - Fatal编程技术网

C#winforms上的FolderBrowser对话框

C#winforms上的FolderBrowser对话框,c#,.net,winforms,folderbrowserdialog,C#,.net,Winforms,Folderbrowserdialog,我正在winform中使用folderBrowserDialog 我需要默认路径或初始路径作为网络位置 例如: folderBrowserDialog1.SelectedPath = @"\\server1\foo\bar\"; 这是行不通的。我的系统位于正确的网络上,我可以通过浏览器访问目录并运行命令 这是一个非功能?还是有工作要做? 如果有人能指引我走过,我将不胜感激 谢谢, 当您使用\\name约定访问网络资源时,IvarWindows会进行临时映射。我不确定是否有一个条款可以以简洁的方

我正在winform中使用folderBrowserDialog

我需要默认路径或初始路径作为网络位置

例如:

folderBrowserDialog1.SelectedPath = @"\\server1\foo\bar\";
这是行不通的。我的系统位于正确的网络上,我可以通过浏览器访问目录并运行命令

这是一个非功能?还是有工作要做? 如果有人能指引我走过,我将不胜感激

谢谢,
当您使用
\\name
约定访问网络资源时,Ivar

Windows会进行临时映射。我不确定是否有一个条款可以以简洁的方式从.net应用程序中执行同样的操作。您可能希望先将驱动器映射到一个字母,然后使用
@“Z:\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;
        }

    }

当您单步执行代码时,是否会抛出任何(有趣的)异常?我在我的计算机(WinXP SP3,Visual C#Express 2008)上对此进行了测试,它工作正常。你能提供更多关于失败的细节吗?你在尝试时看到了什么?您使用的是哪个操作系统和C#?@cristobalito:这不会引发任何异常,它只会进入基本文件夹(“我的电脑”)视图@sidewinderguy:同样的掐!我在Win XP SP3上使用Visual C#Professional Edition 2008…那么ShowDialog是否默认打开网络位置?天哪,我讨厌文件夹浏览器对话框/是的,因为我的应用程序本身是从网络驱动器运行的……我不能假设用户有一个映射的驱动器号……而且弄清楚映射的驱动器号也会很痛苦!:(嘿,大卫,谢谢你的解决方案。我最后做了类似的事情。我迭代了所有映射的驱动器,并试图找到reqd文件夹。但我真的很喜欢你的解决方案,因为它可以连接和断开网络驱动器。你介意我重用你的代码吗?-IvarPlease do…我不在这里发布任何专有的东西。