WPF中使用檔案瀏覽對話方塊的幾種方式

2021-09-22 20:33:30 字數 3533 閱讀 2886

原文:

wpf中使用檔案瀏覽對話方塊的幾種方式

wpf本身並沒有為我們提供檔案瀏覽的控制項, 也不能直接使用forms中的控制項,而檔案瀏覽對話方塊又是我們最常用的控制項之一. 下面是我實現的方式

方式1: 使用win32控制項openfiledialog

? 1 23

4567

microsoft.win32.openfiledialog ofd =newmicrosoft.win32.openfiledialog();

ofd.defaultext =".xml";

ofd.filter ="xml file|*.xml";

if(ofd.showdialog() ==true)

方式2: 使用forms中的openfiledialog控制項

wpf中是不能直接使用forms中的控制項的,否則會提示找不到forms名字控制項. 如果你仍然要用, 答案便是新增.net 引用reference

之後就可以像下面一樣正常使用forms中的控制項了?1

2345

6789

system.windows.forms.openfiledialog openfiledialog1 =newsystem.windows.forms.openfiledialog();

openfiledialog1.initialdirectory ="c:\\";

openfiledialog1.filter ="txt files (*.txt)|*.txt|all files (*.*)|*.*";

openfiledialog1.filterindex = 2;

openfiledialog1.restoredirectory =true;

if(openfiledialog1.showdialog() == system.windows.forms.dialogresult.ok)

類似的有資料夾瀏覽對話方塊:?1

2345

6system.windows.forms.folderbrowserdialog folderbrowserdialog =newsystem.windows.forms.folderbrowserdialog();

system.windows.forms.dialogresult result = folderbrowserdialog.showdialog();

if(result == system.windows.forms.dialogresult.ok)

方式三: 使用win32 api

bool winapi getopenfilename(  __inout  lpopenfilename lpofn)
使用這種方式, 你需要自己實現lpopenfilename結構和對getopenfilename方法就行封裝:?1

2345

6789

1011

1213

1415

1617

1819

2021

2223

2425

2627

2829

3031

[structlayout(layoutkind.sequential, charset = charset.auto)]

publicclassopenfilename

publicclasslibwrap

之後的工作就是例項化、初始化和方法呼叫了:?1

2345

6789

1011

1213

1415

openfilename ofn =newopenfilename();

ofn.structsize = marshal.sizeof(ofn);

ofn.filter ="project files\0*.xml";

ofn.file =newstring(newchar[256]);

ofn.maxfile = ofn.file.length;

ofn.filetitle =newstring(newchar[64]);

ofn.maxfiletitle = ofn.filetitle.length;

ofn.initialdir ="c:\\";

ofn.title ="open project";

ofn.defext ="xml";

ofn.structsize = marshal.sizeof(ofn);

if(libwrap.getopenfilename(ofn))

方式四: 自己寫控制項(王道)或者使用第三方控制項

在WPF中使用資料夾選擇對話方塊

開發中有時會想實現 選擇某個資料夾 的效果 在wpf中,使用microsoft.win32.openfiledialog只能選擇檔案,folderbrowserdialog只能用樹型的方式選擇資料夾,很不好用.終於找到乙個辦法,使用windows api code pack 在vs裡開啟packag...

對話方塊中使用CHtmlEditCtrl

最近由於專案需要,需要在對話方塊中使用chtmleditctrl控制項,網上大部分的 都是直接使用chtmleditview的,很少有chtmleditctrl在對話方塊中使用的示例。網上有乙個 動態表情的 中存在bug,因此給出了可以編譯執行的 1 由於chtmleditctrl的建構函式被宣告為...

瀏覽資料夾對話方塊的使用

新建乙個基於對話方塊的mfc應用程式browsefolderdialogtest,刪除對話方塊中原有控制項。新增乙個按鈕 顯示資料夾選擇對話方塊 新增按鈕的單擊事件函式 如下 void cbrowsefolderdialogtestdlg onbnclickedbutton1 memset brow...