限制OpenFileDialog仅访问网络文件

时间:2015-12-29 05:54:12

标签: c# winforms c#-3.0 openfiledialog

我想稍微自定义 OpenFileDialog ,以便只能访问我的某个网络PC(tsclient),而不能访问我的本地驱动器和下载文件夹。< / p>

我不知道这样做。所以,我正在使用临时替代,它将默认位置设置为网络,但不会阻止本地资源使用。

openFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.NetworkShortcuts);

有谁能告诉我如何阻止本地资源使用,但让网络资源可访问?

1 个答案:

答案 0 :(得分:1)

希望您可以 后,用户点击“确定/打开”任意文件,检查选定的filepath(或FileName)。

如果filepath不是网络filepath,您应拒绝它并要求用户重复其选择。

例如,如果Z:\是您的网络文件夹,那么您可以编写类似这样的内容,

bool accepted;
do {
    accepted = false;
    OpenFileDialog ofd = new OpenFileDialog();
    DialogResult result = ofd.ShowDialog();
    if (result == System.Windows.Forms.DialogResult.OK) {
        accepted = ofd.FileName.Substring(0, 3) == "Z:\\"; //change this to your network folder
        if (accepted) {
            //accepted network folder, do something
        } else {
            //accepted network folder, gives warning with message box
        }
    } else if (result == System.Windows.Forms.DialogResult.Cancel) {
        accepted = true; //if the user chooses cancel, he can go out of the loop
    }
} while (!accepted); //prevents unaccepted answer

编辑:

  1. 以上示例仅限于主要提示您可以在批准之前检查用户选择了哪些filepath 。据了解,Z:\可能并不总是网络文件夹所在的位置。

  2. 如果您需要更动态的方式来确定驱动器是否在网络中,我建议您查看DriveInfo.DriveType

  3. 如果您需要更强大的检查方法,您可以在一个新定义的配置文件中创建特定于客户端的可访问文件夹列表。

  4. 如果您有多个用户拥有不同的权限,您需要在确定用户是否可以继续使用该文件之前检查用户的权限以及所访问的文件夹。

    < / LI>
  5. 所有情况下,它们共享相同的主要想法:必须首先接受用户输入,然后才能继续。这个主要想法是我上面的例子中展示的那个。

  6. 希望它可以澄清