自定义的打开文件对话框

flankerfc 著于 发表 2008-1-16
C#,.NET 2.0,.NET 3.0/3.5

轉貼:http://www.msproject.cn/article/CustomerDialog.aspx

Customizing OpenFileDialog in (原碼地址).NET By CastorTiu

简介

这是一个可以自定义扩展功能的打开文件对话框。.NET中有OpenFileDialog打开文件对话框类,但是他不被自定义。而这个控件就是可以让你给.NET的OpenFileDialog类添加自己定义的功能。但是因为OpenFileDialog类被定义为sealed的,所以你不能继承它。

使用

首先我创建了一个控件叫做OpenFileDialogEx,它包含有一个OpenFileDialog对象。但是OpenFileDialogEx并没有特别的功能,你应该继承OpenFileDialogEx类,创建你自己定义的功能,你可以在他上面添加其他的控件,比如按钮、面板等等。

OpenFileDialogEx中我加入了三个属性、三个方法和两个事件。首先是三个属性:

·DefaultViewMode - 设置OpenFileDialog的现实方式,默认是详细列表,也可以指定为图标、平铺、缩略图等。

·StartLocation - 你自定义控件在打开文件对话框的位置。

·OpenDialog - 这是控件中的OpenFileDialog对象,可以对他设置初始目录、过滤器等。

三个方法都是虚方法,这样子你可以重写他们:

·OnFileNameChanged() - 当用户点击任何文件名时的事件处理。

·OnFolderNameChanged() - 当用户改变目录时的事件处理。

·OnClosing() - 当对话框关闭时的事件处理。

还有两个事件:FileNameChangedFolderNameChanged,在默认的OnFileNameChanged()OnFolderNameChanged()方法中会被调用。不过,建议你重写OnFileNameChanged()OnFolderNameChanged()方法,直接处理避免将事件多层向上传递。

### 如何在C#中创建或自定义打开文件对话框 #### 使用`OpenFileDialog` 为了实现文件选择功能,在C#应用程序中最常用的方式是利用内置的 `System.Windows.Forms.OpenFileDialog` 类。此类提供了一个标准对话框,允许用户浏览并选择要打开文件。 ```csharp using System; using System.Windows.Forms; public class OpenFileDialogExample { public void ShowOpenFileDialog() { using (OpenFileDialog openFileDialog = new OpenFileDialog()) { openFileDialog.InitialDirectory = "c:\\"; openFileDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; openFileDialog.RestoreDirectory = true; if (openFileDialog.ShowDialog() == DialogResult.OK) { string selectedFilePath = openFileDialog.FileName; // 获取选中的文件路径 Console.WriteLine($"Selected file path is {selectedFilePath}"); } } } } ``` 通过上述代码可以设置初始目录、过滤器以及是否恢复上次使用的目录等属性来定制对话框的行为[^1]。 #### 自定义外观与行为 对于更高级的需求,可以通过继承 `CommonDialog` 并重写其成员来自定义对话框的功能和界面。然而,这通常涉及到更多的工作量,并且可能需要深入了解 Windows API 或者第三方库的支持。 另一种方法是在现有控件的基础上进行扩展,比如修改样式或者添加额外按钮等功能。需要注意的是,某些情况下这种做法可能会受到操作系统的限制而无法完全按照预期效果呈现。 如果希望进一步增强用户体验,则考虑采用 WPF 的方式构建更加灵活美观的选择窗口;WPF 提供了更为丰富的布局选项和支持动画特效的能力,能够更好地满足复杂场景下的需求[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值