在Winform中菜单动态添加“最近使用文件”
生活随笔
收集整理的這篇文章主要介紹了
在Winform中菜单动态添加“最近使用文件”
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近在做文件處理系統中,要把最近打開文件顯示出來,方便用戶使用。網上資料有說,去遍歷“C:\Documents?and?Settings\Administrator\Recent”下的最近文檔本。文主要介紹在Winform界面菜單中實現【最近使用的文件】動態菜單的處理,實現一個較為常用的功能。
1 新建windform項目
在窗體中添加 menuStrip 控件 ,添加 ‘打開’與 ‘最近文件’
?
2 打開settings 文件,如下圖添加相關參數
?
?3 代碼處理過程
添加一個FileHandler 類,用戶處理配置文件中的類容熟悉以及菜單欄中的單項對象。代碼如下
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();}} }4 在主界面中調用FileHandler相關函數
FileHandler filehandler;private void Form1_Load(object sender, EventArgs e){filehandler = new FileHandler();filehandler.RecentFileMenu = this.最近文件ToolStripMenuItem;//指定 最近文件 的菜單值,方便動態創建文件菜單filehandler.UpdateMenu();}private void 打開ToolStripMenuItem_Click(object sender, EventArgs e){OpenFileDialog fls = new OpenFileDialog();if (fls.ShowDialog() == System.Windows.Forms.DialogResult.OK){filehandler.AddRecentFile(fls.FileName);}}效果圖如下
?
轉載于:https://www.cnblogs.com/wangyonglai/p/10135746.html
總結
以上是生活随笔為你收集整理的在Winform中菜单动态添加“最近使用文件”的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python——因子分析(KMO检验和B
- 下一篇: display:flex弹性布局