翻譯|使用教程|編輯:龔雪|2023-11-06 10:34:08.303|閱讀 109 次
概述:本文主要介紹如何使用Telerik UI for WinForms的RadOpenFileDialog組件來自定義應用程序的文件窗口和對話框,歡迎下載最新版組件體驗!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
Telerik UI for WinForms包含了一個高度可定制的組件,它取代了.NET中默認的OpenFileDialog。在下一個更新版本中,會發(fā)布一個向對話框瀏覽器提那家自定義位置的請求功能,本文演示了這個和另一個自定義功能,它可以幫助用戶在瀏覽文件夾時快速選擇最后修改的文件,自定義將根據最近的日期/時間更改文件列表的順序。
Telerik UI for WinForms擁有適用Windows Forms的110多個令人驚嘆的UI控件。所有的UI for WinForms控件都具有完整的主題支持,可以輕松地幫助開發(fā)人員在桌面和平板電腦應用程序提供一致美觀的下一代用戶體驗。
技術交流群:726377843 歡迎一起進群討論
本文中演示的其他自定義包括:
首先使用從RadOpenFileDialog繼承的類創(chuàng)建一個.CS文件,添加容器組件方法,這是實現(xiàn)所必需的,文件應該是這樣:
using System.ComponentModel; using Telerik.WinControls.UI; namespace Telerik.Customized; public class MyRadOpenFileDialog : RadOpenFileDialog { public MyRadOpenFileDialog() { } public MyRadOpenFileDialog(IContainer components) { } }
選擇對您的項目有意義的命名空間和類名。
自定義位置允許以編程方式在導航樹視圖的頂部添加路徑,您可以從環(huán)境變量或應用程序配置設置中配置路徑。
創(chuàng)建一個用這些元素初始化的位置列表:
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)添加所需的任何內容,另外添加一個表示節(jié)點的圖像。
此時,您的自定義將看起來像這樣:
可以用Open File中的自定義文本替換對話框窗口中的文本,通過在類初始化中添加以下文本來修復整個應用程序:
this.OpenFileDialogForm.Text = "Open File - Default Text - Brand and My Company Name";
您可以添加一個新屬性來自定義創(chuàng)建的每個對話框:
public string DialogText { get => OpenFileDialogForm.Text; set => OpenFileDialogForm.Text = value; }
文件對話框可以使用與應用程序不同的主題,例如,如果您在應用程序中使用Fluent主題,而目標操作系統(tǒng)是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;
然后創(chuàng)建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類實例時,可以打開一個默認選項來記住最后一個目錄(如果創(chuàng)建新實例或重新啟動應用程序,則不會存儲最后一個目錄)。通過在初始化時設置這一行來實現(xiàn):
this.RestoreDirectory = true;
要替換現(xiàn)有的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列即可節(jié)省時間。定制標題可能會使你的產品品牌與眾不同,能夠在文件對話框中使用對比鮮明的主題來鼓勵用戶關注它。
這些自定義的結果可能如下所示:
如果您想查看本文中使用的完整源代碼,請查看下面的代碼:
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。
本站文章除注明轉載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網