在Winform中選單動態新增「最近使用檔案」

2021-07-22 19:54:29 字數 2416 閱讀 6065

在我上篇隨筆《文書處理控制項tx text control的使用》介紹的內容中,我針對性的對這個控制項的使用做了乙個全面的了解,發現其中案例**總這部分的功能實現【最近使用的檔案】挺好,於是把它進行了整理,把整個思路作為一篇隨筆進行記錄,希望對大家有所幫助。

這個功能我們在很多程式上有見過,如在visual  studio裡面,我們可以看到這個列表的動態處理。

以及在word工具欄裡面,一樣有這樣的實現

這個功能主要的處理邏輯就是,我們在開啟檔案、儲存檔案、或者另存為其他檔案的時候,把對應的檔案路徑進行記錄儲存,當我們開啟這個選單的時候,把它們進行載入動態生成相關的選單即可,一旦我們選擇其中乙個檔案,我們就把它們載入到主介面進行展示或者編輯即可。

1)設計處理過程

首先我們需要在介面裡面新增乙個 選單的佔位符,方便我們以此為基準,加入對應的動態選單,如下設計介面所示

剩下的就是**的處理了,我們剛才提到,我們需要記錄檔案開啟,儲存、另存為的幾個操作的檔案,然後儲存起來使用,也就是儲存乙個檔案路徑和檔案標題列表了。

這個儲存我們可以通過系統配置檔案的常規處理實現,先在程式專案解決方案裡面找到對應的settigns.settings檔案,開啟後進行新增記錄物件處理,如下所示。

有了這些,那麼我們的資訊儲存就實現了第一步了,需要的就是把它們通過**進行管理起來。

有了上面的設計處理過程,我們有了乙個固定的選單可以使用,有了乙個配置物件以及對應的屬性可以儲存和載入處理,那麼剩下的就是通過**把它們之間的關係聯絡起來,實現動態檔案列表的選單處理即可。

我們定義乙個類,並新增對應的檔案數量大小和檔案列表的屬性,用來記錄和配置檔案定義的屬性內容,以及儲存對應的選單項物件,如下所示。

其中我們需要在檔案開啟,儲存、另存的時候,做乙個檔案列表的記錄處理,因此需要增加乙個函式,用來把最近的檔案追加到列表的頂端(最近檔案列表),以及裁剪多於指定數量的記錄,具體操作如下所示。

///

///新增新檔案路徑到頂部列表(在開啟、儲存、另存為操作中)

///public

void addrecentfile(string

filepath)}}

//最後,僅保留指定的檔案列表數量

for (int bynd = _filelist.count - 1; bynd > _nmaxfiles - 1; bynd--)

updatemenu();

}

動態增加選單的處理,就是根據這些檔案列表進行的選單項處理,先清空舊的記錄,然後新增新紀錄,並新增對應給的事件處理即可。

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

當然,檔案的開啟,我們最好用乙個狀態記錄檔案是否編輯過,如果編輯過則應該提示使用者是否儲存原來的檔案。

///

///最近檔案法的選單項

///void menuitem_click(object

sender, eventargs e)

}toolstripmenuitem item =(toolstripmenuitem)sender;

int pos =item.getcurrentparent().items.indexof(item);

if (pos >= 0 && pos <_filelist.count>

}///

///清空最近選單列表的選單項

///void clearlistitem_click(object

sender, eventargs e)

其中的選單項入口,我們應該在主程式初始化後把對應的選單項賦值給輔助類即可。

//

指定【最近使用的檔案】的選單項,方便對文件列表選單進行動態建立

_filehandler.recentfilesmenu = this.menufile_recentfiles;

整個過程在此基本完成了,最後我們看看實際的效果,符合我們的預期。

在winform中新增普通右鍵選單

顯示水平滾動條 點選gridcontrol的run designer在彈出的對話方塊中選擇views,將右側屬性視窗中optionsview下的columnautowidth設定成false 可以選擇多行 點選gridcontrol的run designer在彈出的對話方塊中選擇views,將右側屬...

MFC中選單項的動態新增 刪除與響應

在編寫遊戲地圖編輯器時涉及到選單項的動態新增和動態響應,本文記錄了碰到的一些問題和解決方法。因為遊戲地圖是分層次儲存和顯示的,所以在編輯器主選單中有個layer選單,這個選單中的選單項除了乙個 show only 選單項和乙個sperator,其它的選單項是根據地圖中的層數和層的名字動態新增的,所以...

MFC中選單項的動態新增 刪除與響應

在編寫遊戲地圖編輯器時涉及到選單項的動態新增和動態響應,本文記錄了碰到的一些問題和解決方法。因為遊戲地圖是分層次儲存和顯示的,所以在編輯器主選單中有個layer選單,這個選單中的選單項除了乙個 show only 選單項和乙個sperator,其它的選單項是根據地圖中的層數和層的名字動態新增的,所以...