我正在学习C和C#,这个问题适用于C#。我有一个应用程序,我想在我的C:\驱动器上打开文件。我可以使用OpenFileDialog打开任何类型的文件吗?这是怎么做到的?
以下是代码:
case 1:
openSomething();
break;
private static void openSomething()
{
OpenFileDialog open = new OpenFileDialog();
open.Filter = "All Files (*.*)|*.*";
open.ShowDialog();
if (open.ShowDialog() == DialogResult.OK)
{
File.Open(open.FileName); // I want to do something like this
}
}
在文件程序中是否有类似System.Diagnostics.Process.Start的内容,所以我使用openfiledialog获取文件名,然后我的代码用默认应用程序打开文件?
编辑:我回答了我自己的问题
private static void openSomething()
{
OpenFileDialog open = new OpenFileDialog();
open.Filter = "All Files (*.*)|*.*";
if (open.ShowDialog() == DialogResult.OK)
{
System.Diagnostics.Process.Start(open.FileName);
}
}
答案 0 :(得分:1)
通常程序会尝试使用Filter属性限制OpenFileDialog列出的文件类型,但是,如果要允许打开任何类型的文件,请在设置此属性(在调用ShowDialog之前)时使用某些内容像这样
open.Filter = "All Files (*.*)|*.*";
意味着您的用户可以选择各种文件。
请记住,Filter属性只是为最终用户提供快速选择的工具,如果您设置了任何专用过滤器,OpenFileDialog本身也可以打开任何类型的文件。
您的用户需要做的就是在文件名文本框空间中键入*.*
,他/她可以选择任何类型的文件(当然,只有当他/她具有所需的文件/文件夹访问权限时)
ShowDialog返回DialogResult.OK后,您可以检查Filename属性中是否选择了某些内容,如果要使用与文件扩展名关联的默认应用程序打开文件,则使用Process.Start
if (open.ShowDialog() == DialogResult.OK)
{
if(open.FileName.Trim() != string.Empty)
{
Process.Start(open.FileName);
}
}
当然,如果文件选择没有关联的默认程序(例如,如果用户选择了一个DLL?),这可能会有问题,所以也许最好应用过滤器来只选择一个众所周知的文件类型的子集。但这取决于您的要求。
答案 1 :(得分:1)
OpenFileDialog
实际上只是一个让用户选择文件或多个文件的窗口。它不会打开任何文件。关闭对话框后,可以从FileName
或FileNames
属性中检索所选的文件名。打开和读取/编辑文件是一项独立的任务。