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

news2024/12/24 11:34:49

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

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

获取Telerik UI for WinForms新版下载(Q技术交流: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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1181519.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【题解】2023 DTS算法竞赛集训 第1次

比赛地址&#xff1a;https://www.luogu.com.cn/contest/143650 P1319 压缩技术 https://www.luogu.com.cn/problem/P1319 简单的签到模拟题 #include <iostream>//c标准库 using namespace std; int main(){int a,n,t0,i0,b,s0;//t判断有没有回车&#xff0c;i判断输…

分支限界法求解迷宫问题

问题描述 从入口出发&#xff0c;按某一方向向前探索&#xff0c;若能走通(未走过的&#xff09;&#xff0c;即某处可以到达&#xff0c;则到达新点&#xff0c;否则试探下一方向&#xff1b;若该点所有的方向均没有通路&#xff0c;则沿原路返回到前一点&#xff0c;换下一个…

一台抵得上多种测量仪器-B1500A半导体参数分析仪

一台抵得上多种测量仪器-B1500A半导体参数分析仪 B1500A 半导体器件分析仪 卓越的测量能力&#xff0c; 完美的一体化解决方案&#xff0c; 经济高效, 出色的软件。 #B1500A 3步表征设备 使用B1500A半导体参数分析仪或PC上随附的EasyEXPERT group 表征软件。EasyEXPERT …

如何卸载在linux下通过rpm安装的mysql

目录 1.先关闭MySQL服务并查看运行状态 2.使用 rpm 管道命令的方式查看已安装的mysql 3. 使用rpm -ev 命令移除安装 4. 删除MySQL数据库内容 1.先关闭MySQL服务并查看运行状态 如果之前安装过并已经启动&#xff0c;则需要卸载前请先关闭MySQL服务 systemctl stop mysqld…

Juniper Networks Junos OS EX远程命令执行漏洞(CVE-2023-36845)

Juniper Networks Junos OS EX远程命令执行漏洞&#xff08;CVE-2023-36845&#xff09; 免责声明漏洞描述漏洞影响漏洞危害网络测绘Fofa: body"J-web" || title"Juniper Web Device Manager" 漏洞复现1. 构造poc2. 查看文件3. 执行命令 免责声明 仅用于技…

【编译原理】LL(1)文法

文章目录 语法分析基本概念自上而下语法分析自上而下语法分析的问题 消除文法左递归消除直接左递归消除间接左递归消除左递归的算法 解决回溯问题FIRST集与提出公共左因子FIRST集提取左公共因子 FOLLOW集合 构造FIRST集和FOLLOW集构造FIRST集合构造每个文法符号的FIRST集合构造…

新书稿费终于下来了!你猜有多少?

我的新书《从零开始学ARM》从正式出版到现在已经有半年时间了&#xff01; 第一批印刷的几千册已经基本销售完&#xff0c; 第二版会对其中勘误进行修正&#xff0c;并继续继续印刷。 前两年写书、审稿&#xff0c; 所有业余时间都耗在这上面了&#xff0c; 在下面这篇文章…

人大金仓KingbaseES_V008R006C008B0014安装

人大金仓安装 一、安装前准备工作 1、硬件环境要求 KingbaseES支持通用X86_64、龙芯、飞腾、鲲鹏等国产CPU硬件体系架构。 2、软件环境要求 KingbaseES支持各种主流的Linux操作系统64位发行版本&#xff0c;包括CentOS、中标麒麟、银河麒麟、统信UOS、Deepin、凝思、中科方…

基于springboot+vue开发的教师工作量管理系

教师工作量管理系 springboot31 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了教师工作量管理系统的开发全过程。通过分析教师工作量管理系统管理的不足&#xff0c;创建了一个计算机管理教师工作量管理系…

EtherCAT转EtherNET/IP协议网关控制EtherCAT伺服驱动器的方法

只需一步&#xff0c;将你的EtherCAT协议设备转换为EthernetIP协议&#xff01; 捷米特JM-ECTM-EIP网关&#xff0c;这款专为EtherCAT协议设备设计的转接装置&#xff0c;可以轻松地将EtherCAT设备数据采集的数据转换成EthernetIP协议。而且&#xff0c;我们的网关接口非常灵活…

同星智能亮相2023北美汽车测试展,国产替代的前方是“星辰大海”!

01 圆满落幕 2023年10月24日至10月26日&#xff0c;为期三天的2023北美汽车测试展览会&#xff08;Automotive Testing Expo&#xff09;在美国密歇根 Surburban Collection Showplace 成功举行。同星智能作为一家具备全球影响力的中国工业软件企业亮相了本次展会&#xff0c;…

聊一聊 tcp/ip 在.NET故障分析的重要性

一&#xff1a;背景 1. 讲故事 这段时间分析了几个和网络故障有关的.NET程序之后&#xff0c;真的越来越体会到计算机基础课的重要&#xff0c;比如 计算机网络 课&#xff0c;如果没有对 tcpip协议 的深刻理解&#xff0c;解决这些问题真的很难&#xff0c;因为你只能在高层…

linux 安装 Anaconda3

文章目录 一、下载二、安装1.使用xftp把下载包拉到服务器上2.执行安装命令3、在安装时没有自动添加环境变量&#xff0c;这里手动设置3.1.1通过修改~/.bashrc来配置环境变量3.1.2 重新载入配置文件3.1.3 测试 一、下载 官网下载链接 二、安装 1.使用xftp把下载包拉到服务器上…

安装RabbitMQ

安装RabbitMQ 下载需要的两个包 # 这直接就可以安装了&#xff0c;下面 ‘上传对应的rmp包’ 操作 [rootrabbitmq-1 ~]# curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash [rootrabbitmq-1 ~]# yum install erlang-21.3.8.2…

linux继续循环案例测试ping网络,目录下的文件权限循环输出

第一&#xff1a;查看本机ip #ip addr 通过脚本访问本机ip1-100&#xff0c;是否可以ping通&#xff0c;并显示结果&#xff0c;上图 知识点 ping -c 数字1 -w 数字1&#xff0c;向目的ip发送1个数据包&#xff0c;等待1秒&#xff0c;无回复中止 &>/dev/null 知…

python 之生成器表达式,以及与列表推导式的区别

文章目录 生成器表达式基本结构示例生成一个简单的生成器遍历生成器并获取值使用条件过滤 优点 生成器表达式与列表推导式的区别1. 返回类型2. 生成方式3. 内存占用4. 访问方式示例总结 生成器表达式是一种在 Python 中用来创建生成器的高效方法。生成器表达式和列表推导式类似…

The valid characters are defined in RFC 7230 and RFC 3986

服務器通過Body 對象接收參數&#xff0c;而客戶端通過param 地址URL傳參數&#xff0c;不能解析。 return axiosHelper<Protocol<ABC[]>>({method: POST,url: ,data: _reqparams: {data: _req}}) public List<InvoiceItem> getAAAA(RequestBody Query quer…

Ubuntu 22.04.3 LTS中安装singularity

文章目录 概要背景知识什么是singularity ? 安装流程1. 安装Go2. 下载Singularity3. 编译Singularity源代码 4. 验证安装是否成功singularity的使用安装open structure 小结 概要 这里主要记录singularity的安装和使用&#xff0c;安装过程中会出现相关的错误&#xff0c;所以…

redis: 记录一次线上redis内存占用过大问题解决过程

引言 记录一次线上redis占用过大的排查过程&#xff0c;供后续参考 问题背景 测试同事突然反馈测试环境的web系统无法登陆&#xff0c;同时发现其他子系统也存在各类使用问题 排查过程 1、因为首先反馈的是测试环境系统无法登陆&#xff0c;于是首先去查看了登陆功能的报错…

阿里微服务质量保障系列:故障演练

对于很多大型企业(如阿里巴巴)来说,经过多年的技术演进,系统工具和架构已经高度垂直化,服务器规模也达到了比较大的体量。当服务规模大于一定量(如10000台)时,小概率的硬件故障每天都会发生。这时如果需要人的干预,系统就无法可靠的伸缩。 为此每一层的系统都会面向失…