CƠ BẢN
SỰ KIỆN
NÂNG CAO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Hộp thoại - Dialog File trong C#

Trong hướng dẫn này mình sẽ giới thiệu đến các bạn một trong các điều khiển hộp thoại đó chính là Dialog File. Điều khiển này được sử dụng rất nhiều trong các ứng dụng.

Chúng ta sẽ cùng nhau tìm hiểu về Font Dialog, Color Dialog, OpenFile Dialog,... Đây là các Dialog thông dụng và được sử dụng hầu hết trong các phần mềm học tập.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Font Dialog

Font Dialog là hộp thoại cho phép người dùng chọn và thiết lập Font cho văn bản.

Ta sử dụng ShowDialog để hiển thị hộp thoại và thuộc tính Font để trả về font hiện tại.

bai15 winforms 01 PNG

2. Color Dialog

Color Dialog là hộp thoại cho phép người dùng chọn và hiển thị các màu có sẵn trong bảng màu của Windows cũng như thiết lập thêm nhiều màu mới.

Ta cũng sử dụng ShowDialog để hiển thị hộp thoại và thuộc tính Color để trả về màu được chọn.

bai15 winforms 02 PNG

3. OpenFile Dialog

Trong phần này chúng ta sẽ tìm hiểu về một số thuộc tính và phương thức thường dùng trong OpenFileDialog.

bai15 winforms 03 PNG

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à khởi tạo luồng đọc file: StreamReader() thuộc tính namespace System.IO.
  • Đọc tất cả nội dung file một lần, hay đọc từng dòng nội dung của File.
    • ReadToEnd(): đọc đến hết file Text.
    • ReadLine(): đọc từng dòng nội dung file Text (phương thức Peek() giúp dò tìm ký tự bất kỳ ở dòng kế tiếp nếu không tìm thấy thì trả về -1).
  • Giải phóng tài nguyên luồng đọc File: Dispose().
  • Đóng luồng đọc file: Close().

*Lưu ý về đường dẫn:

Application.StartupPath trả về đường dẫn đến thư mục hiện hành của dự án - thư mục Debug

Ví dụ: Application.StartupPath + "\\hoten.txt" (tham chiếu đường dẫn đến file hoten.txt lưu trong thư mục hiện hành của dự án, không quan tâm đến dự án được lưu ở ổ đĩa nào, thư mục nào).

Lấy đường dẫn thư mục hiện hành: Directory.GetCurrentDirectory().

Thiết lập lại đường dẫn thư mục hiện hành: Directory.GetCurrentDirectory("thư mục hiện hành mới").

Kiểm tra sự tồn tại của File: File.Exits("Đường dẫn + tên File") (trả về True nếu có tồn tại và trả về False nếu file không tồn tại).

4. SaveFile Dialog

Trong phần này chúng ta sẽ tìm hiểu một số thuộc tính và phương thức thông dụng trong SaveFileDialog.

bai15 winforms 04 PNG

Một số thuộc tính thông dụng:

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

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à khởi tạo luồng ghi file: StreamWriter() thuộc tính namespace System.IO
  • Ghi nội dung vào file:
    • Write("Nội dung"): ghi nội dung vào file và không xuống dòng sau khi ghi.
    • WriteLine("Nội dung"): ghi nội dung vào file và xuống dòng sau khi ghi.
  • Dispose(): giải phóng tài nguyên sử dụng cho TextWriter
    • Close(): đóng luồng ghi file.

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

  • Khi ghi (lưu) nội dung vào file, nếu file chưa tồn tại thì sẽ tạo ra file mới.
  • Nếu file đã tồn tại, thì tùy theo chỉ định của lập trình viên trong luồng ghi file mà file sẽ bị ghi đè nội dung hoặc ghi nối tiếp vào cuối nội dung hiện có.

Khởi tạo luồng ghi file:

StreamWriter = New StreamWriter("đường dẫn + tên file", [true/false]). (False mặc định sẽ ghi đè lên nội dung file hiện có, True ghi tiếp theo vào cuối nội dung file hiện có).

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

Trong phần này mình sẽ thực hiện một chương trình soạn thảo văn bản đơn giản sử dụng các Dialog. Cụ thể chúng ta sẽ có một Form mẫu như dưới đây, sau đó thực hiện thêm một vài sự kiện.

bai15 winforms 05 PNG

Chương trình sẽ có chức năng như sau:

  • Khi người dùng nhấn nút "Mở tập tin" để mở một tập tin có định dạng .txt. Nội dung của tập tin này sẽ được hiển thị lên TextBox (chỉ cho phép hiển thị tập tin .txt).
  • Người dùng nhấn nút "Lưu tập tin" để lưu nội dụng vừa soạn thảo trong TextBox vào một thư mục nào đó trên hệ thống.
  • Khi người dùng nhấn nút "Thoát", hệ thống sẽ hiển thị hộp thoại hỏi người dùng có muốn thoát hay không. Nếu chọn Yes thì thoát khỏi chương trình, nếu chọn No thì hủy bỏ lệnh.

Bây giờ chúng ta sẽ bắt đầu thiết kế giao diện cho giống với Form mẫu, cụ thể các điều khiển sau đây:

  • 3 Button với 3 chức năng khác nhau: Mở tập tin, lưu tập tin, thoát.
  • 1 OpenFileDialog để mở tập tin với định dạng .txt.
  • 1 SaveFileDialog để lưu tập tin dưới định dạng .txt.
  • 1 TextBox để nhập và hiển thị nội dung.
  • 1 Label để hiển thị tiêu đề.

Sau khi tạo xong giao diện cho chương trình, bây giờ ta bắt đầu viết sự kiện cho các Button.

Bước 1: Xử lý sự kiện cho Button "Lưu tập tin".

Trong sự kiện này chúng ta sẽ sử dụng SaveFileDialog để lưu tập tin. Ta sẽ khởi tạo luồng lưu file, sau đó sử dụng Writeline (lưu nội dung vào file và xuống dòng sau khi ghi). Sau khi lưu ta cần sử dụng Dispose() để giải phóng tài nguyên sử dụng 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 nhấn nút "Lưu tập tin" thì một cửa sổ mới hiện ra cho biết bạn muốn lưu tập tin ở đâu trong hệ thống. Ở đây mình đã lưu tập tin với tên là "Example.txt".

bai15 winforms 06 PNG

Bước 2: Xử lý sự kiện cho nút "Mở tập tin".

Tương tự như lưu tập tin, ta sử dụng OpenFileDialog để thực hiện mở tập tin. Ta cũng khởi tạo luồng ghi file sau đó sử dụng ReadToEnd để đọc hết file txt rồi gán nội dung vào ô TextBox. Sau khi đọc nội dung ta cần sử dụng Dispose() để giải phóng tài nguyên luồng đọ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ở lại tập tin "Example.txt" vừa được lưu ở trên nhé.

bai15 winforms 07 PNG

Bước 3: Xử lý sự kiện cho nút "Thoát".

Đối với sự kiện này thì ta đã xử lý khá nhiều, vì đa số trong các ứng dụng đều có sự kiện thoát giúp người dùng thoát khỏi 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. Kết luận

Như vậy là chúng ta đã cùng nhau tìm hiểu về các hộp thoại Dialog, cụ thể là FontDialog, ColorDialog, OpenDialog, SaveDialog. Cũng như là ví dụ áp dụng các Dialog trong winforms. Đây là các Dialog rất quan trọng vậy nên các bạn hãy luyện tập thật nhiều để thành thạo nó nhé. Ở các bài tiếp theo mình sẽ hướng dẫn nhiều kiến thức hay hơn nữa, các bạn nhớ chú ý theo dõi nhé !!!

Cùng chuyên mục:

Cách dùng Stack (ngắn xếp) trong C#

Cách dùng Stack (ngắn xếp) trong C#

Mình sẽ giới thiệu về các đặc điểm, thuộc tính và phương thức của Stack…

Cách dùng Queue (hàng đợi) trong C#

Cách dùng Queue (hàng đợi) trong C#

Mình sẽ giới thiệu về các đặc điểm, thuộc tính, phương thức của Queue, cũng…

Cách dùng Hashtable (bảng băm) trong C#

Cách dùng Hashtable (bảng băm) trong C#

Cụ thể sẽ tìm hiểu Hashtable là gì? các đặc điểm của nó, cùng với…

Sự kiện Enter và Leave trong C# Winforms

Sự kiện Enter và Leave trong C# Winforms

Trong bài viết này mình sẽ hướng dẫn các bạn cách ...

Sự kiện KeyPress, KeyDown, KeyUp trong C# Winforms

Sự kiện KeyPress, KeyDown, KeyUp trong C# Winforms

Một câu hỏi được đặt ra là làm cách nào để có thể phát hiện…

Sắp xếp trộn trong C# (Merge Sort)

Sắp xếp trộn trong C# (Merge Sort)

Trong bài viết này mình sẽ hướng dẫn các bạn cách sắp xếp các ..

Sắp xếp nổi bọt trong C# (Bubble Sort)

Sắp xếp nổi bọt trong C# (Bubble Sort)

Trong bài viết này mình sẽ hướng dẫn các bạn cách sắp ...

Cách in ra hình tam giác ký tự * trong C#

Cách in ra hình tam giác ký tự * trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn cách ...

Cách tính tổng các số chẵn từ 1 đến N trong C#

Cách tính tổng các số chẵn từ 1 đến N trong C#

Trước khi đi vào viết chương trình, chúng ta cùng tìm hiểu qua số chẵn…

Cách tính tổng các số lẻ từ 1 đến N trong C#

Cách tính tổng các số lẻ từ 1 đến N trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn cách tính tổng các lẻ…

Cách đếm số chữ số của một số nguyên trong C#

Cách đếm số chữ số của một số nguyên trong C#

Chúng ta cùng xem qua một số ví dụ để hiểu rõ hơn về chương…

Cách tính chu vi và diện tích hình tam giác trong C#

Cách tính chu vi và diện tích hình tam giác trong C#

Tam giác là một loại hình cơ bản trong hình học, có ba đỉnh là…

Cách tính chu vi và diện tích hình tròn trong C#

Cách tính chu vi và diện tích hình tròn trong C#

Trước khi đi vào viết chương trình tính chu vi và diện ..

Cách tính chu vi và diện tích hình chữ nhật trong C#

Cách tính chu vi và diện tích hình chữ nhật trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn ...

Cách xóa phần tử trùng lặp khỏi mảng trong C#

Cách xóa phần tử trùng lặp khỏi mảng trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn cách loại bỏ các ..

Cách tìm tất cả các chuỗi con của chuỗi đã cho trong C#

Cách tìm tất cả các chuỗi con của chuỗi đã cho trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn cách tìm ...

Cách xóa các ký tự trùng lặp khỏi chuỗi trong C#

Cách xóa các ký tự trùng lặp khỏi chuỗi trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn cách xóa các ký tự…

Đếm số lần xuất hiện của ký tự trong chuỗi trong C#

Đếm số lần xuất hiện của ký tự trong chuỗi trong C#

Trong bài viết này minh sẽ hướng dẫn các bạn cách đếm ...

Cách chuyển đổi nhị phân sang thập phân trong C#

Cách chuyển đổi nhị phân sang thập phân trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn cách chuyển đổi số ...

Cách chuyển đổi thập phân sang nhị phân trong C#

Cách chuyển đổi thập phân sang nhị phân trong C#

Số nhị phân là các con số có cơ số là 2. Các số nhị…

Top