当前位置:
首页 > Python基础教程 >
-
C#教程之在Winform中菜单动态添加“最近使用文件
最近在做文件处理系统中,要把最近打开文件显示出来,方便用户使用。网上资料有说,去遍历“C:\Documents and Settings\Administrator\Recent”下的最近文档本。文主要介绍在Winform界面菜单中实现【最近使用的文件】动态菜单的处理,实现一个较为常用的功能。
1 新建windform项目
在窗体中添加 menuStrip 控件 ,添加 ‘打开’与 ‘最近文件’
2 打开settings 文件,如下图添加相关参数
3 代码处理过程
添加一个FileHandler 类,用户处理配置文件中的类容熟悉以及菜单栏中的单项对象。代码如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
using System; using System.Collections.Generic; using System.Collections.Specialized; using System.IO; using System.Linq; using System.Text; using System.Windows.Forms; /******************************************************************* * Copyright (C) 版权所有 * 文件名称:FileHandler * 命名空间:TestRecentMenu * 创建时间:2018/12/18 10:27:52 * 作 者: wangyonglai * 描 述: * 修改记录: * 修改人: * 版 本 号:v1.0.0 **********************************************************************/ namespace TestRecentMenu { public class FileHandler { /// <summary> /// 最近文件菜单项 /// </summary> public ToolStripMenuItem RecentFileMenu { get ; set ; } private StringCollection fileList; private int fileNumbers; public FileHandler() { fileNumbers = Properties.Settings.Default.FileNember; fileList = Properties.Settings.Default.FilePaths; if (fileList == null ) { fileList = new StringCollection(); } } /// <summary> /// 更新最近菜单单项 /// </summary> public void UpdateMenu() { if (RecentFileMenu == null ) return ; int i; //清除当前菜单项 for (i = RecentFileMenu.DropDownItems.Count - 1; i >= 0; i--) { RecentFileMenu.DropDownItems.RemoveAt(i); } for (i = 0; i < fileList.Count; i++) { ToolStripItem menuItem = new ToolStripMenuItem(); menuItem.Text = Path.GetFileName(fileList[i]); menuItem.Tag = fileList[i]; menuItem.Click += menuItem_Click; RecentFileMenu.DropDownItems.Add(menuItem); } } void menuItem_Click( object sender, EventArgs e) { //点击最近打开菜单项要执行的动作。 } /// <summary> /// 添加最近文件路径(每次打开文件时,调用该方法) /// </summary> /// <param name="filePath"></param> public void AddRecentFile( string filePath) { fileList.Insert(0, filePath); //从最后位置开始倒着找,如果找到一致名称,则移除旧记录 for ( int i = fileList.Count - 1; i > 0; i--) { for ( int j = 0; j < i; j++) { if (fileList[i] == fileList[j]) { fileList.RemoveAt(i); break ; } } } //最后,仅保留指定的文件列表数量 for ( int bynd = fileList.Count - 1; bynd > fileNumbers - 1; bynd--) { fileList.RemoveAt(bynd); } Properties.Settings.Default.FilePaths = fileList; Properties.Settings.Default.Save(); UpdateMenu(); } } } |
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式