C# - C Sharp: Hộp thoại (Dialog) trong C#
Hộp thoại (Dialog) trong C# là một loại cửa sổ, được sử dụng để kích hoạt giao tiếp hoặc hộp thoại chung giữa máy tính và người dùng. Hộp thoại thường được sử dụng để cung cấp cho người dùng phương tiện chỉ định cách thực hiện một lệnh hoặc để trả lời một câu hỏi. Windows.Form là một lớp cơ sở cho một hộp thoại.
Đôi khi, trong giao diện người dùng đồ họa, một cửa sổ được sử dụng để giao tiếp với người dùng hoặc thiết lập hộp thoại giữa người dùng và ứng dụng. Cửa sổ bổ sung này được gọi là hộp thoại. Nó có thể truyền thông tin cho người dùng; nhắc người dùng trả lời hoặc cả hai.
Loại hộp thoại đơn giản nhất là cảnh báo hiển thị thông báo và có thể yêu cầu người dùng xác nhận rằng thông báo đã được đọc, thường bằng cách nhấp vào “OK” hoặc quyết định xem có nên tiếp tục hành động hay không bằng cách nhấp vào “OK” hoặc “Cancel”.
Một số hộp thoại là tiêu chuẩn như thông báo cảnh báo hoặc thông báo lỗi. Lưu tệp và nhập mật khẩu. Chúng được gọi là hộp thoại tiêu chuẩn.
Một hộp thoại cũng có thể được tùy chỉnh. Hộp thoại như vậy được gọi là hộp thoại tùy chỉnh (Custom Dialog Box).
Hộp thoại là dạng đặc biệt không thể thay đổi kích thước. Chúng cũng được sử dụng để hiển thị các thông báo cho người dùng. Các thông báo có thể là thông báo lỗi, xác nhận mật khẩu, xác nhận xóa bản ghi cụ thể, tiện ích Find-Replace thế của từ, v.v. Có các hộp thoại tiêu chuẩn để mở và lưu tệp, chọn thư mục, in tài liệu, đặt phông chữ hoặc màu sắc cho văn bản, v.v.
Lớp MessageBox được sử dụng để hiển thị thông báo cho người dùng. Phương thức Show() được sử dụng để hiển thị một hộp thông báo với văn bản, chú thích, các nút và biểu tượng được chỉ định. Có khoảng 21 quá tải (overload) khác cũng có sẵn.
Ví dụ
Loại nút và biểu tượng có thể được thay đổi bằng cách sử dụng các giá trị được liệt kê thích hợp.
Có hai loại hộp thoại được đưa ra dưới đây:
- Hộp thoại Modal
- Hộp thoại Modeless
Một hộp thoại mà tạm thời dừng ứng dụng và người dùng không thể tiếp tục cho đến khi hộp thoại đã đóng được gọi là hộp thoại Modal. Ứng dụng có thể yêu cầu một số thông tin bổ sung trước khi có thể tiếp tục hoặc đơn giản có thể muốn xác nhận rằng người dùng muốn tiếp tục một quá trình hành động tiềm ẩn nguy hiểm. Ứng dụng chỉ tiếp tục thực thi sau khi đóng hộp thoại; cho đến khi ứng dụng tạm dừng. Ví dụ, khi lưu tệp, người dùng đặt tên cho tệp hiện có; cảnh báo cho thấy rằng tệp có cùng tên tồn tại, cho dù tệp đó nên được ghi đè hoặc được lưu với tên khác. Tệp sẽ không được lưu trừ khi người dùng chọn “OK” hoặc “Cancel”.
Một loại hộp thoại khác, được sử dụng là hộp thoại Modeless. Nó được sử dụng khi thông tin được yêu cầu không cần thiết để tiếp tục, vì vậy Cửa sổ có thể được để mở, trong khi công việc lại tiếp tục ở một nơi khác. Ví dụ, khi làm việc trong trình soạn thảo văn bản, người dùng muốn tìm và thay thế một từ cụ thể. Điều này có thể được thực hiện bằng cách sử dụng một hộp thoại yêu cầu tìm và thay thế từ đó. Người dùng có thể tiếp tục làm việc, ngay cả khi hộp này đang mở.
Hộp thoại có thể được định cấu hình thành không đổi bằng cách đặt thuộc tính FormBorderStyle thành FormBorderStyle.FixedDialog, đặt thuộc tính MinimizeBox và MaximizeBox thành false. Framework Class Library (FCL) không cung cấp lớp dưới dạng Hộp thoại. Nhà phát triển tạo các lớp hộp thoại tùy chỉnh bằng cách dẫn xuất loại từ lớp cơ sở System.Windows.Form.
Hộp thoại Model được hiển thị bằng cách sử dụng phương thức ShowDialog(). Hộp thoại Modeless được hiển thị bằng cách sử dụng phương thức Show().
Hộp thoại Chung
Hộp thoại được sử dụng chung cho tất cả các Ứng dụng Windows. Nó thực hiện các tác vụ phổ biến như lưu tệp, chọn phông chữ, v.v. Điều này cung cấp một cách tiêu chuẩn cho giao diện Ứng dụng.
Các ví dụ được đưa ra dưới đây:
- FontDialog
- ColorDialog
- OpenDialog
- SaveDialog
Các hộp thoại này được thực hiện bởi hệ điều hành, vì vậy chúng có thể được chia sẻ trên tất cả các Ứng dụng chạy trên hệ điều hành đó (Windows).
Các bước sử dụng hộp thoại chung
- Khởi tạo hộp thoại chung được yêu cầu.
- Đặt các thuộc tính của hộp thoại chung, nếu được yêu cầu.
- Gọi phương thức ShowDialog() của nó để gọi hộp thoại.
ShowDialog() trả về một kiểu liệt kê được gọi là DialogResult. Nó xác định các số nhận dạng (identifier), cho biết nút nào đã được nhấp. Ví dụ, DialogResult.OK và DialogResult.Cancel là một số giá trị cho biết nút OK hoặc Cancel đã được nhấp tương ứng.
Mở Hộp thoại Tệp
OpenFileDialog cho phép bạn chọn một tệp để mở trong một Ứng dụng.
Ví dụ:
Hộp thoại Lưu tệp
Hộp thoại SaveFileDialog được sử dụng để cho phép người dùng chọn đích và tên của tệp sẽ được lưu.
Ví dụ:
Nội dung có thể được lưu vào tệp, sử dụng lớp thích hợp như lớp StreamWriter trong trường hợp Ứng dụng Trình soạn thảo Văn bản.
Hộp thoại Phông chữ và Màu sắc
FontDialog được sử dụng để cho phép người dùng chọn cài đặt phông chữ. ColorDialog được sử dụng để cho phép người dùng chọn màu.
Ví dụ:
Đầu ra của Hộp thoại Màu được đưa ra bên dưới.
Trong cả hai trường hợp, các thuộc tính và phương thức đều có sẵn. Chúng có thể được sử dụng để lấy các giá trị đã chọn hoặc đặt giá trị cho hộp thoại.
Hộp thoại Tùy chỉnh
Mặc dù các hộp thoại thông thường rất hữu ích, chúng không hỗ trợ các yêu cầu của hộp thoại miền cụ thể. Nhà phát triển cần tạo hộp thoại của riêng họ.
Các bước sau trình bày quá trình tạo Hộp thoại Tùy chỉnh:
- Thêm biểu mẫu vào dự án của bạn bằng cách bấm chuột phải vào dự án trong Solution Explorer, trỏ chuột vào Add rồi bấm Windows Form.
- Trong cửa sổ Properties, thay đổi thuộc tính FormBorderStyle thành FixedDialog.
- Tùy chỉnh giao diện của biểu mẫu, theo yêu cầu.
- Thêm điều khiển vào biểu mẫu này.
Ghi chú
Sử dụng phương thức ShowDialog() để mở hộp thoại của Form dưới dạng Modal. Phương pháp này cũng có thể được sử dụng cho các hộp thoại tùy chỉnh. Phương thức Show() được sử dụng để mở hộp thoại Model.