OpenFileDialog、SaveFileDialog常用属性、对话框用法

FileDialog

OpenFileDialog

用戶選擇和瀏覽要打開的文件,可以配置只選擇一個或多個文件

SaveFileDialog

為要保存的文件指定文件名和路徑。

FolerBrowserDialog

 

選擇和創建目錄。.Net 2.0中的新類。

ColorDialog

 

用於選擇顏色

FontDialog

 

所有已安裝的Windows字體、樣式和字號,以及各字體的預覽效果,以便選擇字體。

PageSetupDialog

 

配置頁面的邊距

PrintDialog

 

用於選擇打印機,並設置打印選項

   2、Form

PrintPreviewDialog

在屏幕上進行打印預覽的一種方法。


    3、CommonDialog類定義了下表方法和事件

公共實例方法和事件

 

ShowDialog()

顯示一個通用對話框

Reset()

每個派生的對話框都執行Reset()方法,把對話框類的所有屬性都設置為它們的默認值

HelpRequest

當用戶單擊通用對話框的Help按鈕時,就引發該事件

    CommonDialog是對話框類的基類,所以所有對話框類的使用方式都是類似的。ShowDialog()調用受保護的RunDialog()實例方法來顯示對話框,並利用用戶與對話框交互操作的信息,最終返回一個DialogResult實例。另一方面,Reset()把對話框類的屬性設置為它們的默認值。

 



OpenFileDialog常用屬性

Title

標題

InitialDirectory

默認打開位置,即初始目錄

Filter

設置過慮字符

FilterIndex

屬性指定列表框中默認的選項。其值基於1。

ValidateNames

檢查用戶輸入的文件名是否有效。無效的文件句包含""、/或:等元效字符

CheckFileExist

驗證文件有效性,默認為True

CheckPathExists

驗證路徑有效性,默認為True

ShowHelp

顯示幫助信息

Multiselect

選擇多個文件

    默認情況下:對話框將打開用戶上一次運行應用程序時打開的目錄。它調用的Windows通用對話框使用注冊表來定位上一次打開的文件名

Filter設置文件過慮器
    即定義用戶可以選擇打開的文件類型。簡單的過慮器字符串如下:
   Text Documents (*.txt)|*.txt|All Files|*.*
   過慮器可以分為多個部分,每個部分用一個堅杠字符(|)分隔開。各部分的個數總數是偶數。第一個字符串定義要在列表框中顯示的文本,第二個字符用於指定要在對話框中顯示的文件的擴展名。如:Text Documents (*.txt)|*.txt,分為用“Text Documents (*.txt)”和“*.txt”兩兩部分,部用 “|”分隔。Filter屬性設置過慮字符串。過慮器前后不允許有空白。
 

ValidateNames有效性檢查:
    檢查用戶輸入的文件名是否有效。當為True時,可以用CheckFileExist和CheckPathExists進行其它有效性驗證。

ShowHelp幫助:
    OpenFileDialog提供了一個幫助按鈕,在默認情況下,該按鈕是不可見的。ShowHelp為True時才會顯示。也可以給HelpRequest添加一個事件處理程序,用到給用戶顯示幫助信息。

DialogResult結果:
    OpenFileDialog類的ShowDialog()方法返回一個DialogResult枚舉。該枚舉定義了成員Abort、Cancel、Ignore、No、None、Ok、Retry和Yes。
    None是默認值,只要用戶沒有關閉對話框一,就設置這個值。
    SaveFileDialog只有DialogResult.ok和DialogResult.Cancel

Multiselect選擇多個文件:
    當Multiselect屬性設置為True時,用戶可以選擇多個文件,FileNames數組中的第一個字符串是最后一個選中的文件。FileNme屬性總是包含最后一個選中的文件名。


 

這些屬性在界面中對應如下圖:

 

 


SaveFileDialog常用屬性

AddExtension

是否把擴展名自動添加到用戶輸入的文件名上。默認為True,如果用戶已經輸入了一個文件擴展名,就不會添加其它擴展名了。

CheckFileExist

驗證文件有效性,默認為False

CheckPathExists

驗證路徑有效性,默認為True

CreatePrompt

詢問用記是否分創建一個新文件

OverwritePrompt

是否覆蓋已有文件。


      如果用戶沒有輸入擴展名,就使用 DefaultExt 屬性設置的文件擴展名。如果這個屬性為空,就使用當前選擇的 Filter 中定義的文件擴展名。如果設置了 Filter DefaultExt ,則不論是什 ,都使用 DefaultExt
 

對話框用法:
1)創建一個對放框類的新實例
2)設置選項
3)調用ShowDialog()方法,顯示對話框,等待用戶響應
4)設置響應后的動作

如下面代碼:

            //1、創建一個對放框類的新實例
             OpenFileDialog dlg = new OpenFileDialog();
            //2、設置選項
             dlg.Title = "Sample";
             dlg.ShowReadOnly = true;
            //3、顯示對話框
            if (dlg.ShowDialog()==DialogResult.OK)
             {
                //4、設置響應后的動作
                string fileName = dlg.FileName;
             }
 

 

其它:
得到系統特殊文件夾路徑:
    獲取特定的系統文件夾,可以使用System.Environment類的靜態方法GetFolderPath()。
    Environment.SpecialFolder中定義了系統目錄的路徑
 

             //得到系統中的特定文件夾
            string dir = Environment.GetFolderPath(Environment.SpecialFolder.Templates);

 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MFC打开文件和文件夹 一、利用API实现打开文件对话框和利用MFC来实现打开文件对话框。 方法一:API部分: // OPENFILENAME ofn; // TCHAR szFile[MAX_PATH]; // ZeroMemory(&ofn,sizeof(ofn)); // ofn.lStructSize = sizeof(ofn); // ofn.lpstrFile = szFile; // ofn.lpstrFile[0] = TEXT('/0'); // ofn.nMaxFile = sizeof(szFile); // ofn.lpstrFilter = TEXT("all/0*.*/0jpg/0*.jpg/0bmp/0*.bmp/0"); //定义三个选项,all,text和exe // ofn.nFilterIndex = 1; //定义首选项是哪一个 // ofn.lpstrFileTitle = NULL; // ofn.nMaxFileTitle = 0; // ofn.lpstrInitialDir = NULL; // ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; // if(GetOpenFileName(&ofn)) // { // ::SetDlgItemText(this->m_hWnd,IDC_EDIT1,szFile); // } 方法二、MFC实现 // CFileDialog dlg(TRUE, NULL, NULL, // OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, // NULL); // // if(dlg.DoModal() == IDOK) // { // szFilename = dlg.GetPathName(); // ::MessageBox(NULL,szFilename,NULL,MB_OK); // } 注意:打开文件的方式和打开文件夹的方式是不同的。打开文件的方式是不断的打开直到出现末端为文件,否则遇到文件夹还要继续打开。而打开文件夹则是只要选择到一个路径的文件夹就打开。 下面的这种方式是打开文件夹:MFC实现。 static TCHAR strDirName[MAX_PATH]; BROWSEINFO bi; CString szString = TEXT("选择一个源文件子文件夹"); bi.hwndOwner = ::GetFocus(); bi.pidlRoot = NULL; bi.pszDisplayName = strDirName; bi.lpszTitle = szString; bi.ulFlags = BIF_BROWSEFORCOMPUTER | BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS; bi.lpfn = NULL; bi.lParam = 0; bi.iImage = 0; LPITEMIDLIST pItemIDList = ::SHBrowseForFolder(&bi); if(pItemIDList == NULL) { return ; } ::SHGetPathFromIDList(pItemIDList, strDirName); CString str = strDirName; if(str != "" && str.Right(1) != '//') str += '//'; ::SetDlgItemText(this->m_hWnd,IDC_EDIT1,str);

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值