Windows Forms – Phần 4
Mọi ứng dụng Window cho phép người dùng click phải và hiện lên một
menu theo ngữ cảnh. Nó có nghĩa là các sự chọn lựa menu được dựa vào đối
tượng, hay ngữ cảnh , người dùng đã chọn. Các menu ngữ cảnh cho phép
ứng dụng biểu thị thông tin thêm vào hay các chọn lựa người dùng.
Các menu theo ngữ cảnh có thể được thêm vào các ứng dụng Windows
Forms rất dễ dàng. Chúng ta sẽ thêm một menu theo ngữ cảnh vào cửa sổ
thực thể dữ liệu của chúng ta, các chọn lựa Savevà Cancelkhi người dùng
click phải ở bất kỳ đâu trên Form.
tự động hiển thị ContextMenu khi ngừơi dùng click phải. Nó sẽ hiển thị ContextMenu tại vị trí người dùng click phải. Chú ý rằng thuộc tính này có thể được cập nhật trong thời gian chạy. Thật là quan trọng để ghi chú rằng thuộc tính này là một thành viên của lớp Control, có nghĩa là tất cả control Windows Forms đều có thuộc tính này. Cài thuộc tính ContextMenu của Form1 vào contextMenu1 sử dụng cửa sổ properties. Một combo box sẽ hiển thị các đối tượng ContextMenu hiện tại để chọn từ trên form. Multiple ContextMenus có thể được thêm vào một form, mặc dù chỉ một được gán vào form tại một thời điểm. Chạy ứng dụng và click phải bất kỳ đâu trên trên form để thấy menu ngữ cảnh hiển thị hai tuỳ chọn Save và Cancel. Thực thi ứng dụng với các menu Dialogs Dialogs là một kiểu đặc biệt của Form để lấy thông tin người dùng và tương tác với ngừơi dùng trong các ứng dụng Window. Có một tập các hộp dialog định nghĩa trước để lấy thông tin như vị trí tập tin, màu sắc, và cài đặt máy in. Một ứng dụng tuỳ biến thường sử dụng hộp thoại dialog để thuận tiện chọn dữ liệu từ endusers. Tạo một hộp dialog thì rất giống với tạo một Form chuẩn. Trên thực tế, cùng tiến trình xử lý được dùng để thêm vào một dự án Visual studio.NET. Sự khác chính là bản liệt kê FormBorderStyle, nó phải được cài là Fixel Dialog. Nó tạo cửa sổ không lớn và là nguyên nhân nó giống với hộp dialog Window. Nó cũng là một thực hành Window chuẩn để huỷ ControlBox, MinimizeBox, và MaximizeBox từ một hộp dialog, vì thế các thuộc tính này nên được cài là false trong cửa sổ properties. Bất kỳ control Windows Forms chuẩn nào cũng có thể tồn tại trên một hộp dialog. Bề mặt thiết kế trong Visual studio.NET được dùng để thiết kế các Form chuẩn, và các tuỳ chọn giống nhau có thể dùng cho các nhà phát triển. Modal vs. Modeless Khi chúng ta muốn hiển thị hộp dialog, có hai chọn lựa: modal hay modeless. Hai khái niệm này chỉ cách dialog tương tác với ứng dụng. Một modal dialog ngăn chận các luồng hiện tại và yêu cầu người dùng trả lời vào hộp dialog trứơc khi tiếp tục với ứng dụng. Một Modeless dialog thì giống một cửa sổ chuẩn hơn. Dialog Box Results Thường rất quan trọng để hiểu cách người dùng đóng một hộp dialog. Một ví dụ điển hình đó là một dialog File Open. Nếu người dùng chọn một tập tin thì hành động tiếp theo cho ứng dụng là load tập tin đó, tuy nhiên nếu người dùng click nút Cancel hay đóng hộp dialog thì ứng dụng sẽ không load bất kỳ tập tin nào. Bí quyết để hiểu cách người dùng tương tác với một hộp dialog là bảng liệt kê DialogResult. Các giá trị cho bảng liệt kê này như sau: Value Description Abort Giá trị này thì được trả về khi một người dùng chọn một nút có nhãn Abort. Trong trường hợp này, người dùng muốn huỹ thao tác hiện tại và không lưu sự thay đổi. Cancel Giá trị này thường được trả về khi một người dùng chọn một nút Value Description có nhãnlà Cancel, đóng hộp thoại bằng cách nhấn nút "x", hay nấn phím Esc. Người dùng muốn huỹ các thay đổi và trả về trạng thái trước khi mở hộp thoại. Ignore Giá trị này được trả về khi một người dùng chọn nút có nhãn Ignore. Giá trị này có thể được sử dụng khi ứng dụng cảnh báo người dùng về các điều kiện xảy ra lỗi, nhưng người dùng chọn lệnh Ignore. No Giá trị này thường được trả về khi một người dùng chọn nút có nhãn No. Nó thì bình thường khi hộp thoại được dùng để hỏi người dùng một câu hỏi es/no. Yes Giá trị này thường được trả về khi một ngừời dùng chọn nút có nhãn Yes. Nó là con trỏ đếm đến kết quả trả về Nó và được dùng trong cùng tình huống. None Không có gì được trả về từ hộp thoại. OK Giá trị này đươc trả về khi một người dùng chọn nút có nhãn OK. Nõ thì bình thường trong các hộp thoại và các tin cảnh báo nơi Value Description nào quan trong cho người dùng thừa nhận thông tin. Retry Giá trị này được trả về khi một người dùng chọn nút có nhãn Retry. Nó có ích khi một thao tác không thành công sẽ thành công nếu được thử lại. Để truy cập vào giá trị này bạn phải sử dụng thuộc tính DialogResult của Form. Thuộc tính này là public và có thể truy cập ngay khi người dùng đã đóng hộp dialog. Mở một Dialog Có hai cách để mở một hộp dialog, một là hiển thị modal và một là hiển thị modeless. Để hiện một dialog như một modal dialog, thì sử dụng phương thức sau: DialogResult Form.ShowDialog() Phương thức này là một bộ phận của lớp Form. Phương thức này có thể chấp nhận không có tham số hoặc một đối tượng Form như một tham số. Đối tượng Form này đại diện cho ower của hộp dialog, hộp này có ích bởi vì tất cả đối tượng Form có một con trỏ quay về cha mẹ của chúng, cho phép một hộp dialog có thể lấy hoặc cài dữ liệu vào cha mẹ của nó. Còn nếu không tham số thì truyền các mặc định cửa sổ hiện tại vào cha mẹ nó. Chú ý phương thức này trả về một giá trị bảng liệt kê DialogResult. Phương thức này ngăn chặn sự thực thi, và không có mã nào sau khi nó thực thi cho đến khi người dùng đóng hộp dialog. Khi sự việc này xảy ra thì DialogResult mã được trả về và ứng dụng có thể tiếp tục xử lý. Đoạn mã sẽ như sau: if (aDialogObject.ShowDialog() == DialogResult.Yes) { //User selected Yes //Use the properties of the aDialogObject to perform actions } else { //User selected No – do not perform action } Đoạn mã trên hiển thị hộp dialog để hỏi ngừơi dùng nếu họ muốn lưu tập tin hiện tại. Nếu ngừời dùng chọn Yes thì đoạn mã sẽ thả vào khối if nếu chọn No thì khối else sẽ được thực thi. Common Dialogs .NET Framework cung cấp truy cập đến những common dialog này thông qua các lớp sau. Mỗi lớp này tượng trưng một common dialog và có thể được hiển thị như một hộp dialog. Tất cả lớp này tồn tại trong System.Windows.Forms namespace: Class Description ColorDialog Nó cho phép một ngừơi dùng chọn một màu từ bảng màu. FontDialog Hộp dialog này hiển thị tất cả font hiện có trên hệ thống và cho phép người dùng chọn một cái để dùng trong ứng dụng. OpenFileDialog Cho phép một người dùng mở một tập tin sử dụng hộp thoại mở tập tin chuẩn. SaveFileDialog Nó cho phép người dùng chọn một tập tin, thư mục hay địa chỉ mạng để lưu dữ liệu của ứng dụng. PageSetupDialog Nó cho phép người dùng cài kích cỡ trang, canh lề, và các đặc tính in ấn khác. PrintDialog Nó cho phép người dùng cài định dạng trang hiện hành và các đặc tính in ấn qua hộp dialog thuộc tính in ấn chuẩn. Class Description PrintPreviewDialog Nó hiển thị một tài liệu như nó xuất hiệnk trên máy in đang chọn với các cài đặt trang hiện hành. Tất cả lớp này thừa kế từ lớp System.Windows.Forms.CommonDialog, ngoại trừ lớp PrintPreviewDialog. Lớp System.Windows.Forms.CommonDialog cung cấp các chức năng cơ bản yêu cầu hiện một hộp combox dialog. Mọi lớp common dialog được hiển thị sử dụng phương thức ShowDialog(), nhưng chúng chứa các thuộc tính tuỳ biến sử dụng để định hình và hỏi chức năng tuỳ biến của chúng. ColorDialog Dialog này hiển thị hộp dialog màu sắc chung. Nó hữu ích khi một ngừơi dùng được cho phép định dạng nền của một Form hay control, và bạn muốn cung cấp chúng như một cách để chọn màu ưu tiên. Thuộc tính chính được dùng với lớp này là thuộc tính Color. Nó chứa màu sắc chọn lựa khi hộp dialog trả điều klhiển cho ứng dụng. Thuộc tính này là một cấu trúc màu, chúng có lợi bởi vì .NET framework cần cấu trúc này trong các phương thức và thuộc tính khác. Một tiện lợi khác là nó cho phép người dùng định nghĩa và sử dụng một tập màu sắc custom-defined. Đặc trưng này có thể hiện bằng mặc định, nhưng có thể bị ẩn bằng cách cài thuộc tính AllowFullOpen bằng giá trị false. Như các hộp dialog khác, giá trị trả về từ ShowDialog() phải được xem xét để hiểu cách người dùng thoát khỏi dialog. Đây là một đoạn mã nhỏ sử dụng lớp này: ColorDialog aClrDialog = new ColorDialog(); aClrDialog.AllowFullOpen = false; aClrDialog.Color = this.BackColor; if (aClrDialog.ShowDialog() == DialogResult.OK) { this.BackColor = aClrDialog.Color; } aClrDialog.Dispose(); Chú ý rằng bạn có thể sử dụng bất kỳ hộp dialog nào như ví dụ này, hay bạn có thể thêm thành phần vào một Form trong Visual studio.NEY. Đoạn mã sẽ rất giống, nhưng lớp dialog sẽ có giá trị cho mọi phương thức trong Form, và tất cả thuộc tính này có thể được cài tại thời gian thiết kế trong cửa sổ Properties. FontDialog Lớp này cho phép một người dùng chọn một kiểu font, size, và color. Nó rất hữu ích trong các ứng dụng, nhưng nó cũng có thể được dùng để cho phép người dùng định dạng bằng cách chọn kiểu font để hiển thị trong nhập liệu và màn hình báo cáo. Lớp này chứa một số lượng lớn các thuộc tính mà có thể được cài để định hình các chức năng của hộp dialog : Property Description Color Thuộc tính này lấy hay cài màu sắc font được chọn. Chú ý thuộc tính ShowColor phải là true để nó hợp lệ. Font Đây là thuộc tính quan trọng nhất củ hộp dialog này. Nó trả về cấu trúc Font mô tả việc chọn font của người dùng. Nó có thể sau đó được áp dụng vào một đối tượng Control hay Form để thay đổi font. MaxSize Lấy và cài kích cỡ điểm lớn nhất mà mọt ngừơi dùng có thể chọn trong hộp dialog. MinSize Lấy hay cài kích cỡ điểm nhỏ nhất mà một người dùng có thể chọn trong hộp dialog. Property Description ShowApply Thuộc tính Boolean có thể được cài là true để hiển thị một nút Apply. Nếu nó được dùng, một bộ điều khiển sự kiện được viết để bắt được sựu kiện Apply khi nó xảy ra. Bởi vì khi người dùng chọ Apply, control vẫn không trả về cho ứng dụng, nhưng bộ điềukhiển sự kiện có thể sau đó xử lý font thay đổi trong ứng dụng. ShowColor Thuộc tính Boolean có thể được cài là true để hiển thị một danh sách màu. Nó cho phép ngừơi dùng chọn màu của font cũng như kiểu hay kích cỡ. ShowEffects Thuộc tính Boolean có thể được cài là true để cho phép ngừời dùng chỉ định các tuỳ chọn strikethrough, underline, và text color.
File đính kèm:
- 61_2265.pdf