首页 > 编程语言 >界面组件Telerik UI for WinForms中文教程 - 如何自定义应用程序文件窗口?

界面组件Telerik UI for WinForms中文教程 - 如何自定义应用程序文件窗口?

时间:2023-11-07 10:34:10浏览次数:32  
标签:Telerik 自定义 对话框 WinForms ExplorerControl OpenFileDialogForm FileBrowserListView

Telerik UI for WinForms包含了一个高度可定制的组件,它取代了.NET中默认的OpenFileDialog。在下一个更新版本中,会发布一个向对话框浏览器提那家自定义位置的请求功能,本文演示了这个和另一个自定义功能,它可以帮助用户在浏览文件夹时快速选择最后修改的文件,自定义将根据最近的日期/时间更改文件列表的顺序。

Telerik UI for WinForms拥有适用Windows Forms的110多个令人惊叹的UI控件。所有的UI for WinForms控件都具有完整的主题支持,可以轻松地帮助开发人员在桌面和平板电脑应用程序提供一致美观的下一代用户体验。

获取Telerik UI for WinForms新版下载

qq技术交流群:726377843    欢迎一起进群讨论

本文中演示的其他自定义包括:

  • 设置自定义位置,如:
    • 文件夹应用程序路径
    • OneDrive路径
    • 下载路径
    • PC上的驱动单元
  • 更改对话框中的文本
  • 为“Open File”对话框设置特定的主题
  • 显示网格线
  • 默认恢复最后一个目录
界面组件Telerik UI for WinForms中文教程
实现自定义

首先使用从RadOpenFileDialog继承的类创建一个.CS文件,添加容器组件方法,这是实现所必需的,文件应该是这样:

using System.ComponentModel;
using Telerik.WinControls.UI;

namespace Telerik.Customized;

public class MyRadOpenFileDialog : RadOpenFileDialog
{
public MyRadOpenFileDialog()
{

}

public MyRadOpenFileDialog(IContainer components)
{

}
}

选择对您的项目有意义的命名空间和类名。

设置自定义位置

自定义位置允许以编程方式在导航树视图的顶部添加路径,您可以从环境变量或应用程序配置设置中配置路径。

创建一个用这些元素初始化的位置列表:

  • 应用程序路径(在此示例中硬编码)
  • OneDrive环境变量路径
  • 从操作系统环境下载路径
var places = new List<string>
{
"C:\\MyAppPlace",
Environment.GetEnvironmentVariable("OneDrive") ?? "C:\\",
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "\\Downloads"
};

添加ready单元驱动程序:

places.AddRange(DriveInfo.GetDrives()
.ToList()
.Where(t => t.IsReady)
.Select(drv => drv.Name));

从OpenFileDialogForm属性中为ExplorerControl方法添加自定义位置:

this.OpenFileDialogForm.ExplorerControl.AddCustomPlacesNode("My custom places",
TelerikWinFormsApp1.Properties.Resources.Clipe16, places);

您可以向标签(nodeName)添加所需的任何内容,另外添加一个表示节点的图像。

此时,您的自定义将看起来像这样:

界面组件Telerik UI for WinForms中文教程
更改对话框文本

可以用Open File中的自定义文本替换对话框窗口中的文本,通过在类初始化中添加以下文本来修复整个应用程序:

this.OpenFileDialogForm.Text = "Open File - Default Text - Brand and My Company Name";

您可以添加一个新属性来自定义创建的每个对话框:

public string DialogText
{
get => OpenFileDialogForm.Text;
set => OpenFileDialogForm.Text = value;
}
为文件对话框设置特定主题

文件对话框可以使用与应用程序不同的主题,例如,如果您在应用程序中使用Fluent主题,而目标操作系统是Windows 11,则可以应用Telerik的Windows 11主题。

this.OpenFileDialogForm.ExplorerControl.MainNavigationTreeView.ElementTree.EnableApplicationThemeName = false;
this.OpenFileDialogForm.ExplorerControl.FileBrowserListView.ElementTree.EnableApplicationThemeName = false;
this.OpenFileDialogForm.ElementTree.ThemeName = "Windows11";
this.OpenFileDialogForm.ExplorerControl.MainNavigationTreeView.ElementTree.ThemeName = "Windows11";
this.OpenFileDialogForm.ExplorerControl.FileBrowserListView.ElementTree.ThemeName = "Windows11";

在使用主题之前,您必须加载它,所以在这些行之前添加这个命令:

new Telerik.WinControls.Themes.Windows11Theme().DeserializeTheme();
按最后修改排序文件

要对文件进行排序,需要在加载事件中设置排序描述符。将这一行添加到类初始化中:

this.OpenFileDialogForm.Load += OpenFileDialogForm_Load;

this.OpenFileDialogForm.ExplorerControl.FileBrowserListView.ViewType = ListViewType.DetailsView;

this.OpenFileDialogForm.ExplorerControl.FileBrowserListView.EnableSorting = true;

this.OpenFileDialogForm.ExplorerControl.FileBrowserListView.EnableColumnSort = true;

然后创建OpenFileDialogForm_Load方法,设置排序描述符。FileBrowserListView是一个RadGridView,您可以像往常一样自定义。

private void OpenFileDialogForm_Load(object? sender, EventArgs e)
{
if (this.OpenFileDialogForm.ExplorerControl.FileBrowserListView.SortDescriptors.Count == 0)
{
this.OpenFileDialogForm.ExplorerControl.FileBrowserListView.EnableSorting = true;
var sort = new SortDescriptor(OpenFileDialogForm.ExplorerControl.FileBrowserListView.Columns[2].Name,
ListSortDirection.Descending);
this.OpenFileDialogForm.ExplorerControl.FileBrowserListView.SortDescriptors.Add(sort);
}
this.OpenFileDialogForm.ExplorerControl.FileBrowserListView.ViewType = ListViewType.DetailsView;

}
显示网格线

为了帮助有视觉障碍的人,请打开ShowGridLines,网格线可以是与RadGridView应用程序设计一致的选项。

this.OpenFileDialogForm.ExplorerControl.FileBrowserListView.ShowGridLines = true;
默认恢复最后一个目录

在使用OpenFileDialogForm类实例时,可以打开一个默认选项来记住最后一个目录(如果创建新实例或重新启动应用程序,则不会存储最后一个目录)。通过在初始化时设置这一行来实现:

this.RestoreDirectory = true;
使用自定义文件对话框

要替换现有的RadOpenFileDialog,将其替换为初始化中的自定义类名:

var fileDialog = new MyRadOpenFileDialog();
fileDialog.DialogText = "My Brand and My Company Name";
fileDialog.Filter = "Microsoft Excel (*.xls;*.xlsx)|*.xls;*.xlsx";
DialogResult dr = fileDialog.ShowDialog();
if (dr == System.Windows.Forms.DialogResult.OK)
{
var file = fileDialog.FileName;
// Do Something
}
结论

定制是提高应用程序效率的重要方法,简化对目录中大量文件的排序,可以帮助用户只需单击Name列即可节省时间。定制标题可能会使你的产品品牌与众不同,能够在文件对话框中使用对比鲜明的主题来鼓励用户关注它。

这些自定义的结果可能如下所示:

界面组件Telerik UI for WinForms中文教程

如果您想查看本文中使用的完整源代码,请查看下面的代码:

using System.Collections.Generic;
using System;
using System.Linq;
using System.ComponentModel;
using System.IO;
using Telerik.WinControls.Data;
using Telerik.WinControls.UI;

namespace Telerik.Customized;

public class MyRadOpenFileDialog : RadOpenFileDialog
{
public MyRadOpenFileDialog()
{
this.OpenFileDialogForm.Load += OpenFileDialogForm_Load;

var places = new List<string>
{
"C:\\MyAppPlace",
Environment.GetEnvironmentVariable("OneDrive") ?? "C:\\",
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "\\Downloads"
};

places.AddRange(DriveInfo.GetDrives()
.ToList()
.Where(t => t.IsReady)
.Select(drv => drv.Name));

this.OpenFileDialogForm.ExplorerControl.AddCustomPlacesNode("My custom places",
TelerikWinFormsApp1.Properties.Resources.Clipe16, places);

this.OpenFileDialogForm.Text = "Open File - Defatult Text - Brand and My Company Name";

new Telerik.WinControls.Themes.Windows11Theme().DeserializeTheme();

this.OpenFileDialogForm.ExplorerControl.MainNavigationTreeView.ElementTree.EnableApplicationThemeName = false;
this.OpenFileDialogForm.ExplorerControl.FileBrowserListView.ElementTree.EnableApplicationThemeName = false;
this.OpenFileDialogForm.ElementTree.ThemeName = "Windows11";
this.OpenFileDialogForm.ExplorerControl.MainNavigationTreeView.ElementTree.ThemeName = "Windows11";
this.OpenFileDialogForm.ExplorerControl.FileBrowserListView.ElementTree.ThemeName = "Windows11";

this.OpenFileDialogForm.ExplorerControl.FileBrowserListView.ShowGridLines = true;

this.OpenFileDialogForm.ExplorerControl.FileBrowserListView.ViewType = ListViewType.DetailsView;
this.OpenFileDialogForm.ExplorerControl.FileBrowserListView.EnableSorting = true;
this.OpenFileDialogForm.ExplorerControl.FileBrowserListView.EnableColumnSort = true;

this.RestoreDirectory = true;

}

private void OpenFileDialogForm_Load(object? sender, EventArgs e)
{
if (this.OpenFileDialogForm.ExplorerControl.FileBrowserListView.SortDescriptors.Count == 0)
{
this.OpenFileDialogForm.ExplorerControl.FileBrowserListView.EnableSorting = true;
var sort = new SortDescriptor(OpenFileDialogForm.ExplorerControl.FileBrowserListView.Columns[2].Name,
ListSortDirection.Descending);
this.OpenFileDialogForm.ExplorerControl.FileBrowserListView.SortDescriptors.Add(sort);
}
this.OpenFileDialogForm.ExplorerControl.FileBrowserListView.ViewType = ListViewType.DetailsView;

}

public string DialogText
{
get => OpenFileDialogForm.Text;
set => OpenFileDialogForm.Text = value;
}

public MyRadOpenFileDialog(IContainer components)
{

}
}

 

注意:要自定义RadSaveFileDialog,您只需要将类名和OpenFileDialogForm替换为SaveFileDialogForm。


了解最新Kendo UI最新资讯,请关注Telerik中文网!

标签:Telerik,自定义,对话框,WinForms,ExplorerControl,OpenFileDialogForm,FileBrowserListView
From: https://www.cnblogs.com/AABBbaby/p/17814452.html

相关文章

  • Linux Vim批量注释和自定义注释
    使用Vim编辑Shell脚本,在进行调试时,需要进行多行的注释,每次都要先切换到输入模式,在行首输入注释符"#"再退回命令模式,非常麻烦。连续行的注释其实可以用替换命令来完成。换句话说,在指定范围行加"#"注释,可以使用":起始行,终止行s/^/#/g",例如::1,10s/^/#/g表示在第1~10行行首加"#......
  • 通过mybatis-plus的自定义拦截器实现控制 mybatis-plus的全局逻辑删除字段的控制 (修改
    需求:过滤部分请求不实现mybatis-plus的逻辑删除看到网上关于mybatis-plus的自定义拦截器的文章有的少想了想自己写了一篇欢迎参考指正通过springboot的拦截器在请求进来时标记需要实现的需求的逻辑importlombok.Data;@DatapublicclassSyncBo{privateBoolean......
  • 带你理解 Java 8 的函数式接口使用和自定义
    函数式接口是Java8引入的一种接口,用于支持函数式编程。函数式接口通常包含一个抽象方法,可以被Lambda表达式或方法引用所实现。在本文中,我们将深入探讨函数式接口的概念、用途以及如何创建和使用函数式接口。什么是函数式接口函数式接口是只包含一个抽象方法的接口。但是默认方......
  • 自定义xunit测试用例的执行顺序
    有的时候我们会对程序进行单元测试,为了测试的效果以及后期的维护,我一般会将各个测试拆开,根据需要测试的类分到各个类型中,不过在实际操作的时候就出现了一些意想不到的问题,各个测试的执行是乱序的,按照我自己写测试的习惯,假如我需要测试新写的增删改查的功能,我会将......
  • SpringBoot通过自定义注解+反射机制比较两个对象不同的属性值
    publicclassFieldComparisonUtil{/**•直接返回一个新的对象,并且对象的值只有被修改的部分••@paramold•@paramsource•@paramisParent•@paramtarget目标对象•@return/**•@paramold进行属性比较的原始数据•@paramsource进行属性比......
  • Java 获取自定义注解 字段值 及 注解值
    自定义注解packagecom.jianmu.bean.annotation;importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;/**[email protected]......
  • 038-第三代软件开发-简易视频播放器-自定义Slider (二)
    第三代软件开发-简易视频播放器-自定义Slider(二)文章目录第三代软件开发-简易视频播放器-自定义Slider(二)项目介绍简易视频播放器自定义Slider(二)横向纵向关键字:Qt、Qml、关键字3、关键字4、关键字5项目介绍欢迎来到我们的QML&C++项目!这个项目结合了QML(QtMeta-......
  • 034-第三代软件开发-自定义Slider(一)
    第三代软件开发-自定义Slider(一)文章目录第三代软件开发-自定义Slider(一)项目介绍自定义Slider(一)总结一下关键字:Qt、Qml、Slider、position、关键字5项目介绍欢迎来到我们的QML&C++项目!这个项目结合了QML(QtMeta-ObjectLanguage)和C++的强大功能,旨在开发出色的......
  • Spring自定义数据校验并实现国际化功能
    通常,当我们需要验证用户输入时,SpringMVC提供标准的预定义验证器。我们会引入spring-boot-starter-validation依赖来实现数据校验功能。但是,当我们需要验证特定类型的输入时,我们就需要创建自己的自定义校验逻辑。这里我们取一个相对简单的校验手机号码的功能来实现。为了校验手......
  • 苹果iOS 17.2年底推送:iPhone 15 Pro的自定义操作按钮功能升级
    据报道,苹果会在年底推送iOS17.2版本,新版系统将会修复iPhone15系列WiFi速度慢的问题。与此同时,iOS17.2将会带来翻译功能,iPhone15Pro的自定义操作按钮切换到翻译选项后,按住会弹出一个翻译窗口,用于翻译设备听到的语音内容。除此之外,这枚自定义操作按钮还可以设置为其它很多功......