檔案對話方塊分成兩種:讀檔對話方塊(OpenFileDialog)而存檔對話方塊(SaveFileDialog)。兩者除了外貌不同之外,其成員函式、成員是一樣的。兩者均是設定介面,其用處是可讓使用者藉由此介面指定一個檔案或檔案路徑。
※ 讀檔對話方塊預設的「外觀」如下:
※ 存檔對話方塊預設的「外觀」如下:
. 檔案對話方塊常用的成員函式:
(以下的檔案對話方塊名稱,對於讀檔對話方塊而言通常為openFileDialog1、openFileDialog2、openFileDialog3…等等;而對於存檔對話方塊而言通常為saveFileDialog1、saveFileDialog2、saveFileDialog3…等等;)
※ 檔案對話方塊名稱.ShowDialog():顯示出該檔案對話方塊,好讓使用者指定檔案路徑。
※ 檔案對話方塊名稱.Reset():將該檔案對話方塊的所有成員之值,調回成預設值。
2. 檔案對話方塊常用的成員:
※ 檔案對話方塊名稱.FileName:一個string,即是使用者藉由該檔案對話方塊所選取的檔名(或路徑名)。使用者在上述的ShowDialog()成員函式執行之後,於讀檔對話方塊中選取檔案,按下 之後(或於存檔對話方塊中選取檔案,按下 之後),
中的路徑就會被存入此成員中。
※ 檔案對話方塊名稱.CheckPathExists:一個bool。若為true,表示當選取的路徑不存在時,若使用者按下 (或
)後,會出現警告訊息。若為false,則不會出現警告訊息。預設值為true。
※ 檔案對話方塊名稱.MultiSelect:一個bool。若為true,表示一次可以選取多個檔案。若為false,表是一次只能選取一個檔案。
※ 檔案對話方塊名稱.InitialDirectory:一個string,表示一個路徑。是在執行ShowDialog()成員函式而打開檔案對話方塊之後,整個檔案對話方塊所在的路徑。要注意,若路徑之中有反斜線\,記得要用另一個反斜線\將之脫逸。如,假設今路徑為:D:\Ctest\files,那麼InitialDirectory的值就要是"D:\\Ctest\\files "。
※ 檔案對話方塊名稱.Filter:一個string,對讀檔對話方塊而言代表這個「檔案類型下拉式選單」 中的選項(對存檔對話方塊而言則代表這個「存檔類型下拉式選單」
中的選項),用來讓使用者能夠在資料夾中過濾檔案。其寫法為:"提示文字一|檔案一|提示文字二|檔案二|…提示文字N|檔案N "。每一個提示文字對應到一個檔案。提示文字是顯示在下拉式選單中選項的文字,無實質作用;檔案則有實質作用,即當該下拉式選單的提示文字被選取時,只有該檔案會顯示在資料夾上。檔案的寫法可以是純粹的檔案名,如aaa.bmp,也可以使用萬用字元*,如*.bmp就代表「所有副檔名為bmp的檔案」。
範例如:
private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.Filter = "二進位圖檔(*.bmp)|*.bmp|jpg圖檔(*.jpg)|*.jpg";
openFileDialog1.ShowDialog();
}
則在執行後、按下button1,顯示出的檔案對話方塊的「檔案類型下拉式選單」就會是這個樣子:
(※) 註:檔案的類型事實上是由檔案的編碼來決定,而不是副檔名。也就是說,就算把一個bmp檔的副檔名改成jpg,它本質上還是一個bmp檔,只是副檔名錯了。要真正把檔案的本質從bmp改成jpg,應該要用轉檔器將檔案編碼重新編過才對。
3. 使用範例:
(1) 以讀檔對話方塊為例:
private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
string filename = openFileDialog1.FileName;
pictureBox1.Image = Image.FromFile(filename); //表示從讀檔對話方塊中指定路徑,並將路徑中檔案讀取至pictureBox1控制項的影像檔
}
(2) 以存檔對話方塊為例:
private void button1_Click(object sender, EventArgs e)
{
saveFileDialog1.ShowDialog();
string filename = saveFileDialog1.FileName;
pictureBox1.Image.Save(filename,System.Drawing.Imaging.ImageFormat.Bmp); //表示從存檔對話方塊中指定路徑,並將pictureBox1控制項的影像檔存入該路徑
}
留言列表