本篇要講的 OpenFileDialog.InitialDirectory 正是一例
Ⅰ. OpenFileDialog.InitialDirectory in PPC
在 Windows Form 裡使用 OpenDialogFile 要指定初始目錄多半會用 Environment.GetFolderPath 方法來取得特定資料夾
再配上相對路徑達到初始化目錄的效果 (如下圖
但 InitialDirectory 這個屬性到了 PPC 開發上,就整個被閹割了
OpenFileDialog 只能指定 My Document 或 SD 卡 底下的第一層目錄
是的,就只能指定第一層,否則系統會自動跑回預設根目錄
所以 InitialDirectory 屬性的設定如下圖
圖中的 MyNewFolderUnderMyDocument
即是指 \\My Documents\\MyNewFolderUnderMyDocument
或 \\Storage Card\\MyNewFolderUnderMyDocument
而且很神奇的 (應該說是愚笨?)
若兩邊都有此目錄,OpenFileDialog 便會列出兩個目錄下的所有檔案
(因為不曉得要指定的是哪個資料夾,所以全列出?)
Ⅱ.解決方法
坎尼問了谷歌大神,他說這個問題也是困擾了很多人可能的解決方式有
- 繼承 FileDialog 再寫個 OpenFileDialog Class
- 自己寫個 Form 取代原本的 Class (山寨版)
但目前只做出雛型,效能上還令人不甚滿意 (下面是部分執行畫面
自己做的檔案開啟 Form
比較一下原本的 OpenFileDialog.ShowDialog
UI上有稍做調整
下拉選單直接將列出目錄路徑
所有資料夾皆會列出
Ⅲ.小結
自行開發的 OpenFileDialogForm 也實作了下列三個屬性(坎尼平常也只會用到這三個屬性,其他屬性要等真正需要時再去實作)
- InitialDirectory
- Filter
- SelectedPath
除非是很值得讓使用者等待的資訊,不然一般人大多不會等下去
這是開發 PPC 及 Windows Mobile 系統時要時時注意的一件事
沒有留言:
張貼留言