Windows Forms - Phần 6

.NET Framework lấy khái niệm thừa kế và cho phép một nhà phát triển sử

dụng nó để phát triển các ứng dụng Windows Forms. Một đối tượng Form

có thể thừa kế từ một đối tượng Form khác, vì thế chiếm được sự truy cập

đến tất cả Buttons, TextBoxes, và Menus. Nó là một đặc trưng rất mạnh trong

.NET khi sử dụng để giảm số lượng mã yêu cầu cho việc tạo các cửa sổ và

màn hình giống nhau. Khái niệm này gọi visual inheritance.

pdf10 trang | Chuyên mục: Visual C# | Chia sẻ: dkS00TYs | Lượt xem: 1683 | Lượt tải: 3download
Tóm tắt nội dung Windows Forms - Phần 6, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
Windows Applications 
Windows Forms – Phần 6 
Visual Inheritance 
.NET Framework lấy khái niệm thừa kế và cho phép một nhà phát triển sử 
dụng nó để phát triển các ứng dụng Windows Forms. Một đối tượng Form 
có thể thừa kế từ một đối tượng Form khác, vì thế chiếm được sự truy cập 
đến tất cả Buttons, TextBoxes, và Menus. Nó là một đặc trưng rất mạnh trong 
.NET khi sử dụng để giảm số lượng mã yêu cầu cho việc tạo các cửa sổ và 
màn hình giống nhau. Khái niệm này gọi visual inheritance. 
Một Form luôn luôn thừa kế từ System.Windows.Forms. Có nghĩa là nó có 
thể truy cập đến tất cả thành phần dữ liệu và các phương thức của lớp Form 
cơ bản. Việc thực thi sự thừa kế yêu cầu một nhà phát triển thừa hưởng đối 
tượng Form từ một lớp Form tuỳ biến thay cho System.Windows.Forms. Đó 
là nguyên nhân tất cả control và thuộc tính trong lớp Form tuỳ biến truyền 
qua các lớp Form được tạo mới. 
Tuy nhiên, có vài điều quan trọng phải nhớ. Cấp truy cập của các control 
khác nhau phải được hiểu, giống như cấp truy cập của các thừa kế chuẩn. 
Một thành phần dữ liệu private thì không thể được truy cập bởi bất kỳ đối 
tượng nào bên ngoài đối tượng ban đầu. Vì thế, nếu một control không được 
đánh dấu là protected hay public, lớp thừa hưởng sẽ không tham khảo đến 
control hay override bất kỳ phương thức của control. 
Sử dụng thừa kế trực quan có thể rất có lợi khi thừa kế tạo ra một số lượng 
lớn màn hình mà phải có một thiết kế giống nhau và/hoặc làm các chức năng 
như nhau. Một ví dụ điển hình là một màn hình thực thể dữ liệu. Nếu ứng 
dụng của chúng ta không cần nhập các mẫu tin cá nhân, mà còn thông tin 
automobie, sử dụng thừa kế trực quan để định nghĩa một kiểu thông thường 
phải là một sự chọn lựa tốt. Hiển nhiên, chúng ta sẽ muốn một màn hình 
trông giống nhau, nhưng vài control sẽ thay đổi. Hãy sửa đổi ví dụ trước của 
chúng ta để sử dụng kỹ thuật này. 
Tạo ra một Windows Application mới trongVisual Studio .NET và đặt tên 
nó là VisualInheritance. 
Thay đổi các thuộc tính sau của đối tượng Form1 mặc định. Chúng ta sẽ tạo 
một cửa sổ menu cung cấp cho ngứời dùng các khả năng nhập các mẫu tin 
cá nhân hay các mẫu tin automobie. 
 FormBorderStyle – FixedDialog 
 MaximizeBox – False 
 MinimizeBox – False 
 Size – 200, 200 
 StartPosition – CenterScreen 
 Text – Main Menu 
Đặt hai control trên Form. Định vị chúng ở giữa cửa sổ, đặt nhãn là Person 
và Automobie, và đặt tên là btnPerson và btnAuto. Chúng ta sẽ thêm các bộ 
điều khiển sự kiện vào sau để mở mọi Form thừa hưởng. 
Bây giờ chúng ta sẽ thêm lớp Form cơ bản của chúng ta. Form này sẽ không 
bao giờ hiển thị trực tiếp, nhưng chúng ta sẽ dùng kiểu trực quan của nó 
trong mọi form thừa hưởng. 
Thêm một Form mới vào ứng dụng bằng cách chọn Project | Add Windows 
Form. Bỏ qua các tên mặc định và chọn OK trong hộp dialog Visual 
studio.NET. Sửa đổi các thuộc tính sau của Form để tạo một kiểu trực quan 
duy nhất. 
 Name – frmBase 
 BackColor – White 
 FormBorderStyle – FixedDialog 
 MaximizeBox – False 
 MinimizeBox – False 
 Size – 250, 250 
 StartPosition – CenterScreen 
 Text – Base Form 
Nó sẽ tạo một hộp dialog trắng. Bây giờ thêm hai Buttons vào góc phải của 
form. Chúng sẽ hành động như hai nút Save và Cancel. Bằng cách thêm 
chúng vào lớp cơ bản chúng sẽ được hiện trên các form thừa hưởng, vì thế 
bảo đảm một giao diện người dùng thông thường. Định vị hai nút trong góc 
phải và cài các thuộc tính: 
Button Name Anchor Location Modifiers Size Text 
Button1 btnSave Bottom, 
Right 
159, 151 Protected 75, 23 Save 
Button2 btnCancel Bottom, 
Right 
159, 185 Protected 75, 23 Cancel 
Thuộc tính quan trọng nhất phải chú ý đó là Modifiers. Nó có thể cài mức 
cách ly của lớp Button bên trong form. Nó có thể được cài bất kỳ mức : 
public, protected, private, hay internal. Sau khi chỉnh sửa thuộc tính trong 
cửa sổ Properties, xem xét đoạn mã để thấy các khai báo của hai đối tượng 
Button đã chỉnh sửa thành protected. Nó sẽ rất quan trọng trong việc cho 
phép các đối tượng Form thừa hưởng truy cập vào Buttons. 
Các thành phần protected chỉ có thể được truy cập bởi các lớp thừa hưởng; 
chúng không được truy cập bởi bất kỳ đoạn mã nào bên trong. Các Form 
thừa hưởng không thể truy cập các control khai báo với mức private mặc 
định. Các buttons sẽ được hiển thị trên Forms thừa hưởng, nhưng không có 
bộ điều khiển sự kiện nào có thể được thêm, như các đối tượng không thể 
được truy cập từ các lớp thừa hưởng. 
Cuối cùng chúng ta sẳn sàn thêm một Form thừa hưởng. Tuy nhiên, Visual 
studio.NET yêu cầu các lớp Form cơ bản được biên dịch đầu tiên, vì vậy đầu 
tiên chúng ta phải xây dựng dự án ít nhất một lần. Khi hoàn thành, chọn 
Project | Add Inherited Form. Bỏ qua tên mặc định của tập tin lớp bằng cách 
click Open trong hộp dialog kết quả. Tiếp đó chọn lớp Form cơ bản đúng để 
dùng. Một hộp dialog hiển thị các Form có giá trị hiện tại trong dự án, và 
cho phép bạn thừa hưởng lớp Form mới từ bất kỳ lớp nào của chúng. Chọn 
lớp frmBase và click OK 
Một Form mới sẽ được tạo, nhưng nó sẽ trông giống như lớp frmBase ban 
đầu. Nó có cùng BackColor trắng và hai nút Save và Cancel. Thay đổi thuộc 
tính Text của Form theo các thông tin cá nhân, và thêm bốn control Label và 
bốn control TextBox. Thay đổi thuộc tính Text của các Label là "First 
Name:," "Last Name:", "DOB:" và "SSN:" Thay đổi thuộc tính Name của 
các control TextBox thành txtFName, txtLName, txtDOB, và txtSSN, và để 
trống các thuộc tính Text. Form mới sẽ trông giống như màn hình bên dưới: 
Lập lại tiến trình thêm một Form được thừa kế mới vào dự án. Một lần nữa 
thừa hưởng nó từ lớp frmBase. Thời điểm này thay đổi thuộc tính Text của 
Form để thông tin Automobie và thuộc tính Name vào frmAuto và thêm bốn 
Label vào Form với tựa : "Manufacturer:", "Model:", "Year:", và "Color:" 
Thêm bốn control TextBox định vị bên cạnh các Label, và thay đổi thuộc 
tính Name thành txtManufact, txtModel, txtYear, txtColor cho mọi TextBox. 
Bây giờ chúng ta sẳn sàng thêm các bộ điều khiển sự kiện vào các Form 
thừa hưởng của ta. Nhớ rằng trong một ứng dụng chức năng thì nút Save sẽ 
được dùng giống như ADO.NET hay một đối tượng kinh doanh back-end để 
lưu dữ liệu vào một kho dữ liệu. Trong mẫu nàu thì dữ liệu được đưa vào 
một tập tin XML nhỏ. 
Thêm bộ điều khiển sự kiện Click cho Form thông tin cá nhân cả hai nút 
Save và Cancel. Những nút này được thừa kế từ một lớp cơ bản, chúng có 
thể vẫn được thao tác và các sự kiện thêm vào giống như bất kỳ control 
khác. 
 private void btnSave_Click(object sender, System.EventArgs e) 
 { 
 //Save the values to an XML file 
 //Could save to data source, Message Queue, etc. 
 System.Xml.XmlDocument aDOM = new 
System.Xml.XmlDocument(); 
 System.Xml.XmlAttribute aAttribute; 
 aDOM.LoadXml(""); 
 //Add the First Name attribute to XML 
 aAttribute = aDOM.CreateAttribute("FirstName"); 
 aAttribute.Value = txtFName.Text; 
 aDOM.DocumentElement.Attributes.Append(aAttribute); 
 //Add the Last Name attribute to XML 
 aAttribute = aDOM.CreateAttribute("LastName"); 
 aAttribute.Value = txtLName.Text; 
 aDOM.DocumentElement.Attributes.Append(aAttribute); 
 //Add the DOB attribute to XML 
 aAttribute = aDOM.CreateAttribute("DOB"); 
 aAttribute.Value = txtDOB.Text; 
 aDOM.DocumentElement.Attributes.Append(aAttribute); 
 //Add the SSN attribute to XML 
 aAttribute = aDOM.CreateAttribute("SSN"); 
 aAttribute.Value = txtSSN.Text; 
 aDOM.DocumentElement.Attributes.Append(aAttribute); 
 //Save file to the file system 
 aDOM.Save("PersonnelData.xml"); 
 } 
 private void btnCancel_Click(object sender, System.EventArgs e) 
 { 
 txtLName.Text = ""; 
 txtFName.Text = ""; 
 txtDOB.Text = ""; 
 txtSSN.Text = ""; 
 } 
Đoạn mã này có vẽ quen với bạn, bởi vì nó giống với đoạn mã XML từ ví dụ 
trước. Ý tưởng cơ bản là xếp thứ tự các nội dung của TextBoxes vào một tập 
tin XML và lưu nó vào một hệ thống tập tin. Nút Cancel để xoá các control 
TextBox. 
Đoạn mã cho Automobile Information Form thì càng giống ngoại trừ sự 
khác nhau về tên TextBox được dùng và một tập tin XML khác được tạo. 
Khi nó không biểu lộ các tin tức chúng ta sẽ không hiện nó. 
Cuối cùng , thêm bộ điều khiển sự kiện sau vào sự kiện Click của nút trong 
Form1. 
private void btnPerson_Click (object sender, System.EventArgs e) 
{ 
 Form3 aForm = new Form3(); 
 aForm.ShowDialog(); 
} 
private void btnAuto_Click(object sender, System.EventArgs e) 
{ 
 Form4 aForm = new Form4(); 
 aForm.ShowDialog(); 
} 

File đính kèm:

  • pdf59_1769.pdf