在我上篇隨筆《文書處理控制項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,其它的選單項是根據地圖中的層數和層的名字動態新增的,所以...