溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

WinForm開發(fā)中怎么實現(xiàn)動態(tài)增加“最近使用文件”菜單項

發(fā)布時間:2021-06-12 10:56:40 來源:億速云 閱讀:203 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關(guān)WinForm開發(fā)中怎么實現(xiàn)動態(tài)增加“最近使用文件”菜單項的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

DevExpress WinForm v20.2完整版下載

DevExpress WinForms擁有180+組件和UI庫,能為Windows Forms平臺創(chuàng)建具有影響力的業(yè)務(wù)解決方案。DevExpress WinForms能完美構(gòu)建流暢、美觀且易于使用的應(yīng)用程序,無論是Office風(fēng)格的界面,還是分析處理大批量的業(yè)務(wù)數(shù)據(jù),它都能輕松勝任!

在我們一些和文件處理打交道的系統(tǒng)中,我們往往需要記錄下最近使用的文件,這樣方便用戶快速打開之前瀏覽或者編輯過的文件,這種在很多軟件上很常見,本文主要介紹在Winform界面菜單中實現(xiàn)【最近使用的文件】動態(tài)菜單的處理,實現(xiàn)一個較為常用的功能。

一、菜單動態(tài)加入【最近使用的文件】的介紹

這個功能我們在很多程序上有見過,如在Visual  Studio里面,我們可以看到這個列表的動態(tài)處理。

WinForm開發(fā)中怎么實現(xiàn)動態(tài)增加“最近使用文件”菜單項

以及在Word工具欄里面,一樣有這樣的實現(xiàn)

WinForm開發(fā)中怎么實現(xiàn)動態(tài)增加“最近使用文件”菜單項

剩下的就是代碼的處理了,我們剛才提到,我們需要記錄文件打開,保存、另存為的幾個操作的文件,然后存儲起來使用,也就是存儲一個文件路徑和文件標題列表了。

這個存儲我們可以通過系統(tǒng)配置文件的常規(guī)處理實現(xiàn),先在程序項目解決方案里面找到對應(yīng)的Settigns.settings文件,打開后進行添加記錄對象處理,如下所示。

WinForm開發(fā)中怎么實現(xiàn)動態(tài)增加“最近使用文件”菜單項

有了這些,那么我們的信息存儲就實現(xiàn)了第一步了,需要的就是把它們通過代碼進行管理起來。

2. 代碼實現(xiàn)處理過程

有了上面的設(shè)計處理過程,我們有了一個固定的菜單可以使用,有了一個配置對象以及對應(yīng)的屬性可以存儲和加載處理,那么剩下的就是通過代碼把它們之間的關(guān)系聯(lián)系起來,實現(xiàn)動態(tài)文件列表的菜單處理即可。

我們定義一個類,并添加對應(yīng)的文件數(shù)量大小和文件列表的屬性,用來記錄和配置文件定義的屬性內(nèi)容,以及存儲對應(yīng)的菜單項對象,如下所示。

WinForm界面開發(fā)教程——如何實現(xiàn)動態(tài)增加“最近使用文件”菜單項

其中我們需要在文件打開,保存、另存的時候,做一個文件列表的記錄處理,因此需要增加一個函數(shù),用來把最近的文件追加到列表的頂端(最近文件列表),以及裁剪多于指定數(shù)量的記錄,具體操作如下所示。

/// <summary>
/// 添加新文件路徑到頂部列表(在打開、保存、另存為操作中)
/// </summary>
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;
}
}
}

//最后,僅保留指定的文件列表數(shù)量
for (int bynd = _fileList.Count - 1; bynd > _nMaxFiles - 1; bynd--)
{
_fileList.RemoveAt(bynd);
}

UpdateMenu();
}

動態(tài)增加菜單的處理,就是根據(jù)這些文件列表進行的菜單項處理,先清空舊的記錄,然后添加新紀錄,并添加對應(yīng)給的事件處理即可。

其中增加一個【清空列表】的維護性操作。

WinForm開發(fā)中怎么實現(xiàn)動態(tài)增加“最近使用文件”菜單項

當然,文件的打開,我們最好用一個狀態(tài)記錄文件是否編輯過,如果編輯過則應(yīng)該提示用戶是否保存原來的文件。

/// <summary>
/// 最近文件法的菜單項
/// </summary>
void menuItem_Click(object sender, EventArgs e)
{
if (_bDocumentDirty)
{
var result = MessageBox.Show("需要保存到 "> 其中的菜單項入口,我們應(yīng)該在主程序初始化后把對應(yīng)的菜單項賦值給輔助類即可。 //指定【最近使用的文件】的菜單項,方便對文檔列表菜單進行動態(tài)創(chuàng)建
_fileHandler.RecentFilesMenu = this.menuFile_RecentFiles;  整個過程在此基本完成了,最后我們看看實際的效果,符合我們的預(yù)期。 本文轉(zhuǎn)載自:博客園 - 伍華聰上DevExpress中文網(wǎng),獲取第一手最新產(chǎn)品資訊!

感謝各位的閱讀!關(guān)于“WinForm開發(fā)中怎么實現(xiàn)動態(tài)增加“最近使用文件”菜單項”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI