DIALOG

1.     Font Dialog

Font Dialog là hp thoi cho phép ngưi dùng chn và thiết lp Font cho văn bn.

Ta s dng ShowDialog đ hin th hp thoi và thuc tính Font đ tr v font hin ti.

bai15 winforms 02 PNG

Hình 2.78. Hộp Font Dialog

2.     Color Dialog

Color Dialog là hp thoi cho phép ngưi dùng chn và hin th các màu có sn trong bng màu ca Windows cũng như thiết lp thêm nhiu màu mi.

Ta cũng s dng ShowDialog đ hin th hp thoi và thuc tính Color đ tr v màu đưc chn.

bai15 winforms 01 PNG

Hình 2.79. Hộp Color Dialog

3.     OpenFile Dialog

Trong phn này chúng ta s tìm hiu v mt s thuc tính và phương thc thưng dùng trong OpenFileDialog.

bai15 winforms 03 PNG

Hình 2.80. Ứng dụng sử dụng OpenFileDialog

Bảng 2.37. Một số phương thức thường dùng

Phương thức

Mô tả

Dispose

Giải phóng tài nguyên cấp phát cho Dialog

ShowDialog

Hiển thị Dialog

Reset

Khởi tạo giá trị các thuộc tính về mặt định

Trình t đc file Text:

- Khai báo và khi to lung đc file: StreamReader() thuc tính namespace System.IO.

- Đc tt c ni dung file mt ln, hay đc tng dòng ni dung ca File.

·       ReadToEnd(): đc đến hết file Text.

·       ReadLine(): đc tng dòng ni dung file Text (phương thc Peek() giúp dò tìm ký t bt k dòng kế tiếp).

- Gii phóng tài nguyên lung đc File: Dispose().

- Đóng lung đc file: Close().

*Lưu ý v đưng dn:

Application.StartupPath tr v đưng dn đến thư mc hin hành ca d án - thư mc Debug.

Ví d: Application.StartupPath + "\\hoten.txt" (tham chiếu đưng dn đến file hoten.txt lưu trong thư mc hin hành ca d án, không quan tâm đến d án đưc lưu đĩa nào, thư mc nào).

Ly đưng dn thư mc hin hành: Directory.GetCurrentDirectory().

Thiết lp li đưng dn thư mc hin hành: Directory.SetCurrentDirectory("thư mc hin hành mi").

Kim tra s tn ti ca File: File.Exits("Đưng dn + tên File") (tr v True nếu có tn ti và tr v False nếu file không tn ti).

4.     SaveFile Dialog

Trong phn này chúng ta s tìm hiu mt s thuc tính và phương thc thông dng trong SaveFileDialog.

bai15 winforms 04 PNG

Hình 2.81. Ứng dụng sử dụng SaveFileDialog

Bảng 2.38. Một số thuộc tính thông dụng SaveFileDialog

Thuộc tính

Mô tả

Title

Chỉ định tiểu đề của hộp thoại

Filter

Chuỗi lọc các loại file trong danh sách (Files of type).

FileName

Trả về đường dẫn + tên tập tin được chọn.

FilterIndex

Chỉ số của Filter được chọn, chỉ số bắt đầu từ 1.

InitialDirrectory

Chỉ định thư mục hiện hành khi mở hộp thoại

RestoreDirectory

Cho biết có khôi phục thư mục hiện hành trước khi đóng hộp thoại hay không

AddExtension

Nếu là true sẽ cho phép thêm vào phần mở rộng (jpg, gif) vào tập tin.

DefaultExit

Thêm phần mở rộng (.jpg, .gif, ...) cho tập tin nếu người dùng không cung cấp phần mở rộng

*Lưu ý: Chỉ sử dụng khi thuộc tính AddExtension là true

Bảng 2.39. Một số phương thức thông dụng

Phương thức

Mô tả

Dispose

Giải phóng tài nguyên cấp phát cho Dialog

ShowDialog

Hiển thị Dialog

Reset

Khởi tạo các giá trị thuộc tính về mặc định

Trình t lưu file Text:

·       Khai báo và khi to lung ghi file: StreamWriter() thuc tính namespace System.IO

·       Ghi ni dung vào file:

-      Write("Ni dung"): ghi ni dung vào file và không xung dòng sau khi ghi.

-      WriteLine("Ni dung"): ghi ni dung vào file và xung dòng sau khi ghi.

·       Dispose(): gii phóng tài nguyên s dng cho TextWriter

·       Close(): đóng lung ghi file.

·       *Lưu ý khi lưu file text:

·       Khi ghi (lưu) ni dung vào file, nếu file chưa tn ti thì s to ra file mi.

·       Nếu file đã tn ti, thì tùy theo ch đnh ca lp trình viên trong lung ghi file mà file s b ghi đè ni dung hoc ghi ni tiếp vào cui ni dung hin có.

Khi to lung ghi file:

StreamWriter = new StreamWriter("đưng dn + tên file", [true/false]). (False mc đnh s ghi đè lên ni dung file hin có, True ghi tiếp theo vào cui ni dung file hin có).

5.     Ví dụ sử dụng các Dialog

Trong phn này s thc hin mt chương trình son tho văn bn đơn gin s dng các Dialog. C th chúng ta s có mt Form mu như dưi đây, sau đó thc hin thêm mt vài s kin.

bai15 winforms 05 PNG

Hình 2.82. Thiết kế ứng dụng đọc / ghi tệp

Chương trình s có chc năng như sau:

·       Khi ngưi dùng nhn nút "M tp tin" đ m mt tp tin có đnh dng .txt. Ni dung ca tp tin này s đưc hin th lên TextBox (ch cho phép hin th tp tin .txt).

·       Ngưi dùng nhn nút "Lưu tp tin" đ lưu ni dng va son tho trong TextBox vào mt thư mc nào đó trên h thng.

·       Khi ngưi dùng nhn nút "Thoát", h thng s hin th hp thoi hi ngưi dùng có mun thoát hay không. Nếu chn Yes thì thoát khi chương trình, nếu chn No thì hy b lnh.

Bây gi chúng ta s bt đu thiết kế giao din cho ging vi Form mu, c th các điu khin sau đây:

·       3 Button vi 3 chc năng khác nhau: M tp tin, lưu tp tin, thoát.

·       1 OpenFileDialog đ m tp tin vi đnh dng .txt.

·       1 SaveFileDialog đ lưu tp tin dưi đnh dng .txt.

·       1 TextBox đ nhp và hin th ni dung.

·       1 Label đ hin th tiêu đ.

Sau khi to xong giao din cho chương trình, bây gi ta bt đu viết s kin cho các Button.

c 1: X lý s kin cho Button "Lưu tp tin".

Trong s kin này chúng ta s s dng SaveFileDialog đ lưu tp tin. Ta s khi to lung lưu file, sau đó s dng Writeline (lưu ni dung vào file và xung dòng sau khi ghi). Sau khi lưu ta cn s dng Dispose() đ gii phóng tài nguyên s dng cho TextWriter.

   private void btnSave_Click(object sender, EventArgs e)

   {

       if (saveFileDialog1.ShowDialog() == DialogResult.OK)

       {

           StreamWriter w = new StreamWriter(saveFileDialog1.FileName);

           string s = txtNhap.Text;

           w.WriteLine(s);

           w.Dispose();

           w.Close();

       }

   }

Kết qu: Sau khi nhn nút "Lưu tp tin" thì mt ca s mi hin ra cho biết bn mun lưu tp tin đâu trong h thng. Ví d đã lưu tp tin vi tên là "Example.txt".

bai15 winforms 06 PNG

Hình 2.83. Lưu tệp tin

c 2: X lý s kin cho nút "M tp tin".

Tương t như lưu tp tin, ta s dng OpenFileDialog đ thc hin m tp tin. Ta cũng khi to lung ghi file sau đó s dng ReadToEnd đ đc hết file txt ri gán ni dung vào ô TextBox. Sau khi đc ni dung ta cn s dng Dispose() đ gii phóng tài nguyên lung đc file.

   private void btnOpen_Click(object sender, EventArgs e)

   {

       if(openFileDialog1.ShowDialog() == DialogResult.OK)

       {

           StreamReader r = new StreamReader(openFileDialog1.FileName);

           string s = r.ReadToEnd();

           txtNhap.Text = s;

           r.Dispose();

           r.Close();

       }

   }

Kết qu: Chúng ta s m li tp tin "Example.txt" va đưc lưu trên nhé.

bai15 winforms 07 PNG

Hình 2.84. Mở tệp tin

c 3: X lý s kin cho nút "Thoát".

Đi vi s kin này thì ta đã x lý khá nhiu, vì đa s trong các ng dng đu có s kin thoát giúp ngưi dùng thoát khi chương trình.

   private void btnOut_Click(object sender, EventArgs e)

   {

       DialogResult dg = MessageBox.Show("Bạn có muốn đóng chương trình", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

       if(dg == DialogResult.Yes)

       {

           Application.Exit();

       }

   }

6.     Bài tập

FontDialog, ColorDialog, OpenDialog, SaveDialog là các Dialog rt quan trng trong hu hết các ng dng do đó cn luyn tp tht nhiu, đm bo s dng thành tho.