5.浏览本地文件获取路径与文件名称 C#例子 WPF例子

在开发桌面应用程序时,经常需要让用户选择文件并获取其路径和名称。在 WPF 中,OpenFileDialog 是一个非常实用的控件,可以帮助我们轻松实现这一功能。本文将详细介绍如何使用 OpenFileDialog 获取文件的完整路径和文件名,并展示一个简单的示例代码。


1. 引言

在许多桌面应用程序中,用户需要从文件系统中选择文件进行操作。例如,用户可能需要选择一个配置文件、图片或其他类型的文件。

OpenFileDialog 是 WPF 提供的一个对话框控件,用于打开文件选择窗口,让用户选择文件并获取其路径和名称。


2. 使用 OpenFileDialog

2.1 创建 OpenFileDialog 实例

首先,需要创建一个 OpenFileDialog 的实例,并设置一些基本属性,如文件过滤器和初始目录。

cs 复制代码
string baseDirectory = AppDomain.CurrentDomain.BaseDirectory;

OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "All files (*.*)|*.*"; // 设置文件过滤
openFileDialog.InitialDirectory = baseDirectory; // 设置初始目录
  • Filter :设置文件过滤器,允许用户选择特定类型的文件。例如,"All files (*.*)|*.*" 表示允许选择所有类型的文件。

  • InitialDirectory:设置对话框打开时的初始目录。通常设置为应用程序的当前目录。

2.2 显示对话框并获取用户选择

使用 ShowDialog 方法显示对话框,并检查用户是否选择了文件。制

cs 复制代码
if (openFileDialog.ShowDialog() == true)
{
    // 获取选中文件的完整路径
    string fullpath = openFileDialog.FileName;
    // 获取文件名
    string filename = Path.GetFileName(fullpath);

    // 保存完整路径
    ARBFilepath = fullpath;

    // 将文件名显示在文本框中
    TextBlock1.Text = filename;
}
  • ShowDialog :显示对话框并等待用户操作。如果用户打开了文件,返回值为 true;如果用户取消操作,返回值为 false
  • FileName:返回用户选择的文件的完整路径。虽然属性叫FileName但是获取的是路径。

  • Path.GetFileName:从完整路径中提取文件名。

3. XAML 代码

以下是对应的 XAML 代码,包含一个按钮和一个文本框,用于触发文件选择对话框并显示文件名。

XML 复制代码
        <Button Content="选择文件" Click="Button_Click"/>
        <TextBlock Name="TextBlock1"/>

4. 总结

通过 OpenFileDialog,我们可以轻松地让用户选择文件,并获取其完整路径和文件名。FileName 属性返回的是完整路径,而 Path.GetFileName 方法可以从中提取文件名。在实际开发中,可以根据需要对文件路径进行进一步处理,例如计算相对路径或进行文件操作。

希望本文能帮助你更好地理解和使用 OpenFileDialog。如果有任何疑问或建议,欢迎在评论区留言。


6. 参考资料

相关推荐
2601_966949656 小时前
为什么量化策略需要大量历史股票数据?从回测可信度理解数据规模
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
niucloud-admin6 小时前
JAVA V6 多商户商城 开发文档——插件目录结构
java·开发语言
滕州市燕猫虎计算机科技工作室个体工商户6 小时前
Java锁
java·开发语言
多加点辣也没关系7 小时前
JavaScript|第31章:表单与控件
开发语言·javascript·ecmascript
菜鸟~noob2337 小时前
【电子战】 第09篇:阵列信号处理——波束形成、MVDR、MUSIC【含matlab代码】
开发语言·matlab·信号处理
ocean21037 小时前
2025-2026年Python面试高频知识点洞察
开发语言·python·面试·python八股文
零依赖极客7 小时前
Day 6·1 ARMv8.2 dotprod——vdotq_s32 一条指令做 4 个点积
c语言·开发语言·人工智能·矩阵·arm·vllm
新时代牛马9 小时前
cyclictest 毛刺从哪来?从ftrace、latencytop、perf到IRQ/调度延迟定位
android·开发语言·python·kotlin
三8449 小时前
Java 模板注入(FreeMarker) · 02 · 模板引擎与 FreeMarker 语法
java·开发语言·web安全·freemarker
IvanCodes10 小时前
Python 基础语法(七):推导式与常见遍历写法
开发语言·python