限制 OpenFileDialog 只访问网络文件
Restrict OpenFileDialog to access only network files
我想稍微自定义我的 OpenFileDialog 以便它 只能访问我的网络 PC (tsclient) 而不能访问我的本地驱动器和下载文件夹。
我不知道要实现这个。因此,我正在使用 临时替代方案,它将默认位置设置为网络但不阻止本地资源使用。
openFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.NetworkShortcuts);
谁能告诉我如何阻止本地资源使用但让网络资源可访问?
希望您可以在用户点击"OK/Open"任何文件后检查选中的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
编辑:
以上示例仅限于给出主要思想,即您可以在批准之前检查用户选择的filepath
。据了解,Z:\
可能并不总是网络文件夹所在的位置。
如果您需要更动态的方式来确定驱动器是否在网络中,我建议您查看 DriveInfo.DriveType.
如果您需要更强大的检查方法,您可以在 newly-defined 配置文件之一中创建 client-specific 可访问文件夹列表。
并且如果您有多个拥有不同权限的用户,在确定用户是否可以继续使用该文件之前,您需要检查用户的权限以及访问的文件夹。
在所有情况下,它们的主要思想相同:必须先接受用户输入才能继续。这个主要思想就是我在上面的例子中展示的那个。
希望它能澄清
我想稍微自定义我的 OpenFileDialog 以便它 只能访问我的网络 PC (tsclient) 而不能访问我的本地驱动器和下载文件夹。
我不知道要实现这个。因此,我正在使用 临时替代方案,它将默认位置设置为网络但不阻止本地资源使用。
openFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.NetworkShortcuts);
谁能告诉我如何阻止本地资源使用但让网络资源可访问?
希望您可以在用户点击"OK/Open"任何文件后检查选中的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
编辑:
以上示例仅限于给出主要思想,即您可以在批准之前检查用户选择的
filepath
。据了解,Z:\
可能并不总是网络文件夹所在的位置。如果您需要更动态的方式来确定驱动器是否在网络中,我建议您查看 DriveInfo.DriveType.
如果您需要更强大的检查方法,您可以在 newly-defined 配置文件之一中创建 client-specific 可访问文件夹列表。
并且如果您有多个拥有不同权限的用户,在确定用户是否可以继续使用该文件之前,您需要检查用户的权限以及访问的文件夹。
在所有情况下,它们的主要思想相同:必须先接受用户输入才能继续。这个主要思想就是我在上面的例子中展示的那个。
希望它能澄清