Windows Forms – Phần 3

Một vấn đề với cửa sổ thực thể dữ liệu của chúng ta là khi nó được thay đổi

kích thước thì các control bị khoá lại trong một vùng. Điều đó có vẽ buồn

cười và không chuyên nghiệp với một ứng dụng cao cấp,do đó nên hỗ trợ

khả năng thay đổi kích thước lại và định vị một cửa sổ trong bất kỳ hình

dạng nào người dùng mong muốn. Bất kỳ nhà phát triển nào viết mã để điều

khiển việc thay đổi kích thước và thay thế của các control sẽ đánh giá sự dễ

dàng khi sử dụng .NET Framework và Window Forms để làm việc này. Với

một thuộc tính đơn thì tất cả công việc này có thể được điều khiển bởi .NET

Framework.

pdf12 trang | Chuyên mục: Visual C# | Chia sẻ: dkS00TYs | Lượt xem: 1898 | Lượt tải: 5download
Tóm tắt nội dung Windows Forms – Phần 3, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
dows Applications 
Windows Forms – Phần 3 
Resizing Windows 
Một vấn đề với cửa sổ thực thể dữ liệu của chúng ta là khi nó được thay đổi 
kích thước thì các control bị khoá lại trong một vùng. Điều đó có vẽ buồn 
cười và không chuyên nghiệp với một ứng dụng cao cấp,do đó nên hỗ trợ 
khả năng thay đổi kích thước lại và định vị một cửa sổ trong bất kỳ hình 
dạng nào người dùng mong muốn. Bất kỳ nhà phát triển nào viết mã để điều 
khiển việc thay đổi kích thước và thay thế của các control sẽ đánh giá sự dễ 
dàng khi sử dụng .NET Framework và Window Forms để làm việc này. Với 
một thuộc tính đơn thì tất cả công việc này có thể được điều khiển bởi .NET 
Framework. 
Thuộc tính Anchor thể hiện năng lực kỳ diệu này, và nó là một thành viên 
của hầu hết tất cả các lớp trong System.Windows.Forms namespace bởi vì nó 
là một thuộc tính của lớp System.Windows.Forms.Control. Nhắc lại là, mọi 
control đều thừa hưởng từ lớp này. 
Thuộc tính Anchor được cài một liên kết cuả một hay nhiều cạnh của cha mẹ 
nó. Cài một trong những cạnh này trong thuộc tính sẽ dẫn đến control duy trì 
mối quan hệ vị trí giữa cạnh của nó và cạnh của cha mẹ nó khi form được 
thay đổi kích thước và di chuyển. Thuộc tính này rất quan trọng để thiết kế 
giao diện người dùng thân thiện, và nên được thí nghiệm để hiểu cách nó 
làm việc. 
Visual Studio .NET bao gồm một cửa sổ pop-up để cài thuộc tính này vào 
đúng mối liên kết. Cửa sổ pop-up này cho phép một nhà phát triển chọn 
cạnh để neo control. Cửa sổ pop-up này có thể được tìm thấy như một phần 
của cửa sổ Properties. 
Chúng ta sẽ dùng thuộc tính Anchor để tạo một giao diện người dùng hiệu 
quả hơn cho màn hình thực thể dữ liệu của chúng ta. 
Chọn các control TextBox trong môi trường thiết kế Visual studio.NET. 
Thay đổi thuộc tính Anchor vào Top, Left, Right sử dụng cửa sổ pop-up. Nó 
sẽ duy trì khoảng cách giữa top, left, và right của các cạnh của cha mẹ, bằng 
cách đó thay đổi kích thước control chính xác. 
Chọn các control Button thứ hai và thay đổi thuộc tính Anchor của nó ở 
Bottom, Right. Nó sẽ duy trì vị trí đóng của chúng ở bottom-right của form. 
Chạy ứng dụng và thay đổi kích thước cửa sổ để thấy cách các control điều 
chỉnh chính bản thân chúng. 
Một lần nữa, thuộc tính này được là quyết định hoàn toàn trong thiết kế giao 
diện người dùng chuyên nghiệp trong .NET, và sử dụng nó giảm số lượng 
của công việc yêu cầu bởi các nhà phát triển. Các nhà phát triển tự do này 
tập trung giải quýêt vấn đề kinh doanh thực tế để thay cho việc thay đổi kích 
thước cấp thấp. 
Menus 
Các menu được dùng trong hầu hết mọi ứng dụng Window, và chúng cung 
cấp một cách tuyệt vời để giao tiếp người dùng với các tuỳ chọn để họ làm 
việc theo các chức năng có sẳn. Có hai kiểu menu khác nhau. Thông thường 
nhất là một menu chính(main menu), ở đầu của một cửa sổ và thường bao 
gồm các mục như File, Edit, và Help. Vài ứng dụng chứa các menu theo ngữ 
cảnh để cho phép người dùng truy cập đến thông tin về các chủ đề hay mục 
đặc biệt. Menu theo ngữ cảnh được ẩn cho đến khi người dùng nhấn chuột 
phải - sau đó menu được hiển thị tại vị trí con trỏ . 
Windows Forms cung cấp hỗ trợ đầy đủ cho việc thêm hai kiểu menu vào 
một ứng dụng. Lớp System.Windows.Forms.Menu cung cấp lớp cơ sở cho tất 
cả lớp menu trong hệ thống. Lớp MainMenu tượng trưng cho menu chính, 
và có thể liên kết với một form. Menu này chứa một tập hợp đối tượng 
MenuItem tượng trưng cho một tuỳ chọn menu riêng rẽ. 
Lớp ContextMenu thì có thể thêm các menu theo ngữ cảnh cho một ứng 
dụng. Lớp này cũng chứa một tập hợp đối tượng MenuItem, nhưng 
ContextMenu có thể xuất hiện trong bất kỳ vị trí nào trong một form, nó 
không chỉ tại đầu của một cửa sổ như lớp MainMenu. 
Chúng ta sẽ thêm một menu vào ứng dụng thực thể dữ liệu của chúng ta. 
Thêm một menu vào một ứng dụng Window Form thì dễ như thêm bất kỳ 
control chuẩn nào như là một Button hay TextBox. Chọn control MainMenu 
từ thanh công cụ và vẽ một hộp trên bề mặt thiết kế. Nó sẽ thêm một menu 
tại đầu của form. Chọn menu và gõ File để thêm mục menu đầu tiên. Bây 
giờ khi bạn click trên File một menu mới sẽ hiển thị bên dưới, nó có thể 
thêm vào như chúng ta thêm mục menu File. Bạn có thể tiếp tục gõ vào 
MenuItem, bằng cách đó tạo ra cấu trúc thực sự của hệ thống menu trong 
IDE 
 Sử dụng hệ thống menu để tạo menu sau. Chú ý rằng: bằng cách nhập một 
ký tự gạch(–) đơn lẽ thì một dòng riêng lẽ được tạo. Nó rất hữu ích cho việc 
phân chia các nhóm chọn lựa trong một menu. Một phần quan trọng khác để 
nhớ là bằng cách mở đầu một ký tự với ký hiệu là (&) thì ký tự đó trở thành 
phím tắt cho mục menu này. Vì thế một người dùng có thể chọn menu bằng 
cách chỉ sử dụng bàn phím. 
Top Level Menu 
Item 
Contained Menu Items 
Text – &File 
Name – mnuFile 
Text – &Save 
Name – mnuSave 
 Text – &Cancel 
Top Level Menu 
Item 
Contained Menu Items 
Name – mnuCancel 
 Text – "-" (Single Dash) 
Text – E&xit 
Name – mnuExit 
Text – &Color 
Name – mnuColor 
Text – &Gray 
Name – mnuGray 
RadioCheck – true 
Checked – true 
 Text – G&reen 
Name – mnuGreen 
RadioCheck – true 
 Text – &Blue 
Name – mnuBlue 
RadioCheck – true 
Top Level Menu 
Item 
Contained Menu Items 
 Text – &Red 
Name – mnuRed 
RadioCheck – true 
 Text – &Purple 
Name – mnuPurple 
RadioCheck – true 
Chạy ứng dụng và thấy rằng bạn có một cửa sổ với một menu đang làm việc 
trên đó. Tuy nhiên không có gì xảy ra khi một menu được chọn. Để thay đổi, 
bộ diều khiển sự kiện này phải được thêm bên dưới những mục menu riêng 
lẽ. Chúng ta sẽ tiếp tục với cùng ví dụ này và thêm sự kiện điều khiển để 
người dùng có thể sử dụng menu. 
Các MenuItems riêng rẽ là mọi control giống như các cái khác, và chúng có 
thể được chọn trong bề mặt thiết kế. Làm các việc này bằng cách chỉ ra các 
thuộc tính và sự kiện của chúng trong cửa sổ Properties. Sử dụng danh sách 
sự kiện để thêm bộ điều khiển sự kiện Click cho các mục chọn Save, Cancel, 
và Exit. Thêm đoạn mã sau trong bộ điều khiển sự kiện mới: 
 private void mnuSave_Click(object sender, System.EventArgs e) 
 { 
 SaveFile(); 
 } 
 private void mnuCancel_Click(object sender, System.EventArgs e) 
 { 
 Clear(); 
 } 
 private void mnuExit_Click(object sender, System.EventArgs e) 
 { 
 Close(); 
 } 
Dynamic Menus 
Các menu thường được dùng để phản ánh trạng thái của ứng dụng. Khi 
người dùng tạo các chọn lựa và thay đổi trong ứng dụng, menu phải phản 
ánh các sự thay đổi này. Các mục menu có thể được thêm, xoá và chỉnh sửa 
để phản ánh tình trạng ứng dụng hiện tại. Một lần nữa, các MenuItem hành 
động như các thành phần khác và có thể được vận dụng. 
MenuItems có thể có một nút kiểm kế bên để minh hoạ tuỳ chọn hiện tại. 
Nó rất hữu dụng cho người dùng để họ có thể đánh giá chính tình trạng của 
ứng dụng của họ. Thuộc tính Checked như một biến cờ, nó có thể cài để hiện 
hay dấu một điểm kiểm tra kế bên mục menu. Nếu thuộc tính RadioCheck 
được cài bằng true thì nút kiểm sẽ xuất hiện như một chấm đơn giản. Vì thế 
chỉ một mục menu đơn giản được chọn tại một thời điểm với thuộc tính 
RadioCheck. 
Chúng ta đang thêm một số mã bên dưới các mục menu color để thay đổi 
màu nền của form. Chúng ta sẽ thực hiện bằng cách sử dụng một bộ điều 
khiển sự kiện cho mọi đối tượng MenuItem. 
Trong ứng dụng của chúng ta, thêm phương thức sau vào: 
private void mnuItems_Click(object sender, System.EventArgs e) 
{ 
} 
Chúng ta thêm một bộ điều khiển sự kiện ở đây để thay cho việc cho phép 
Visual Studio.NET IDE làm giùm chúng ta. Chúng ta cần làm như vậy để 
chúng ta có thể liên kết phương thức đơn này với mọi bộ điều khiển sự kiện 
Click của các mục menu. Nó sẽ cho phép chúng ta điều khiển tình trạng của 
menu và ứng dụng từ phương thức đơn này. 
Trở lại với màn hình thiết kế của IDE, click trên mục menu Gray. Trong cửa 
sổ Properties chuyển tới màn hình sự kiện và chọn sự kiện Click. Click trên 
mũi tên thả xuống để hiển thị một danh sách tên phương thức có thể liên kết 
với sự kiện này. Đây là cách để gắn các phương thức vào các sự kiện. Chọn 
phương thức mnuItems_Click() từ danh sách. Lập lại thủ tục này với mọi 
mục trong menu Color. Sự kiện Click của mọi mục nên được liên kết với 
cùng phương thức. 
Bây giờ, mọi đối tượng được liên kết với cùng phương thức bộ điều khiển sự 
kiện, thêm đoạn mã sau để cập nhật BackColor của form và tình trạng menu. 
 private void mnuItems_Click(object sender, System.EventArgs e) 
 { 
 MenuItem aObj; 
 //Set the BackColor of the form based on the selected object 
 if(sender == mnuGray) 
 this.BackColor = System.Drawing.SystemColors.Control; 
 else if(sender == mnuGreen) 
 this.BackColor = Color.Green; 
 else if(sender == mnuBlue) 
 this.BackColor = Color.Blue; 
 else if(sender == mnuRed) 
 this.BackColor = Color.Red; 
 else if(sender == mnuPurple) 
 this.BackColor = Color.Purple; 
 //Set all checkboxes to false 
 mnuGray.Checked = false; 
 mnuGreen.Checked = false; 
 mnuBlue.Checked = false; 
 mnuRed.Checked = false; 
 mnuPurple.Checked = false; 
 //Change the selected item to checked 
 aObj = (MenuItem)sender; 
 aObj.Checked = true; 
 } 
Đoạn mã này sử dụng sự kiện là tham số sender trong một bộ điều khiển sự 
kiện là đối tượng để khởi sự kiện. Điều này được yêu cầu bởi vì bộ điều 
khiển sự kiện này được dùng bởi tất cả đối tượng MenuItem. Vì thế, bước 
đầu là xác định mục menu được chọn bởi người dùng. Và sau đó thay đổi 
BackColor của form theo màu sắc tương ứng. 
Bước kế tiếp là cài một nút kiểm kế bên mục menu thích hợp. Chúng ta có 
thể thực hiện việc này bằng cách cài đặt đơn giản thuộc tính Checked bằng 
true, sau đó đặt nó vào đối tượng MenuItem. Tuy nhiên, trước khi chúng ta 
làm việc này, chúng ta cần cài tất cả đối tượng MenuItem là unchecked. 
Chạy ứng dụng và chọn các tuỳ chọn màu sắc khác nhau. Bạn sẽ thấy màu 
nền của của sổ thay đổi, và hộp kiểm trong menu cập nhật để phản ánh màu 
sắc hiện tại 

File đính kèm:

  • pdf62_5488.pdf
Tài liệu liên quan