logo

Dot Net-Bài 8-Những chức năng mới trong giao diện cửa sổ của VB.NET (phần I)

Tham khảo tài liệu 'dot net-bài 8-những chức năng mới trong giao diện cửa sổ của vb.net (phần i)', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Bài 8 Những chức năng mới trong giao diện cửa sổ của  VB.NET (phần I) Xin nhắc lại là .NET Framework cho ta ba cách để user giao diện với chương trình áp  dụng, đó là Windows Forms (có khi được gọi tắt là WinForms), Web Forms và  Console applications. Lần lượt chúng ta sẽ học qua cả ba thứ nầy. Ngoài ra, kể từ đầu tháng hai 2002, thầy Vũ Năng Hiền sẽ viết một loạt bài riêng về  ASP.NET. ASP.NET là hậu thân của ASP (Active Server Pages), cái framework để ta  lập trình trên Webserver. Microsoft dùng ASP để thay thế cgi­Perl (Common  Gateway Interface ­ Practical Extraction and Report Language), một ngôn ngữ  lập trình rất thịnh hành trên các Unix­based Webserver. Sau nầy chính Microsoft  mướn người ta port Perl qua WindowsNT. Một chương trình ASP gồm có nhiều trang giống như trang Web (HTML) nhưng bên  trong có những mảnh chương trình viết bằng VBScript hay JavaScript (thật ra script  nào cũng được, kể cả PerlScript) nằm ở nhiều nơi. Các mảnh Script nầy có thể truy  cập cơ sở dữ liệu để sửa đổi hay lấy dữ kiện ra để hiển thị tại chỗ ấy (nơi mảnh Script  nằm trong trang ASP) để tạo trang Web kết quả. Trong ASP.NET, tất cả các mảnh chương trình Script ấy được lấy ra riêng, để chung  với nhau và được viết lại dưới dạng ngôn ngữ thuần túy VB.NET hay C#. Phần coding  đó được gọi là code behind (code nằm phía sau) và rất giống như các Event  Handling Sub ta viết trong VB.NET cho Windows Forms. Trong tương lai, khi bàn đến Web Forms ta chỉ học tổng quát về ASP.NET và nhất là  chỉ dùng VB.NET trong các chương trình đơn giản.  Sự quan trọng của Windows Forms ? Windows Forms là cách hiển thị màn ảnh tối tân hơn Win32 bình thường. Kỹ thuật  nằm phía sau Windows Forms trước đây được phát triển cho Windows Foundation  Classes (WFC), để dùng trong Visual J++. Điều nầy cắt nghĩa sự già dặn và vững chải  của một sản phẩm hãy còn ở tình trạng Beta. Khi ta nghe nói đến .NET với những hứa hẹn về ứng dụng trên Internet như Web  Forms và Web Services, rất dễ cho ta tưởng rằng Microsoft phải cung cấp Windows  Forms là cực chẳng đã cho nó trọn vẹn món hàng. Thật ra, Windows Forms là một  phần của các base classes của .NET Framework. Cái Namespace dùng cho nó là  System.Windows.Forms, một Namespace chứa rất nhiều thứ đến đổi hầu như  chúng ta sẽ không cần phải dùng trực tiếp các Windows API về đồ hoạ (Graphics  và Drawings) như trong VB6 nữa. Nhu cầu có những áp dụng phía khách (client­based application) phong phú (rich), linh  động (flexible) và nhanh chóng (responsive) sẽ vẫn còn đó. Hiện nay, để tránh phí tổn  về cài đặt (deployment) các chương trình, người ta bắt đầu có khuynh hướng đặt các  chương trình chạy trên Webserver, rồi cho user sử dụng chúng qua WebBrowser.  Ngoài công chúng thì dùng Internet, trong hãng xưởng thì dùng Intranet (Intranet là  Internet chạy trên Local Area Network ­ mạng địa phương, không liên lạc gì với bên  ngoài), tuy nhiên giao diện trên Web không phong phú hay nhanh như trên desktop và  dĩ nhiên công tác lập trình đòi hỏi một thời gian phát triển lâu hơn. Vì .NET Framework chứa đầy đủ mọi thư viện cần thiết cho chương trình, nên một khi  đã cài đặt .NET Framework trên máy khách rồi ta chỉ cần XCopy đến đó những  folders cần thiết có chứa các tệp (files) chương trình và dữ kiện là đủ. Thực hiện việc  nầy trên mạng địa phương (Local Area Network) rất dễ và nhanh, thậm chí ta có thể tự  động hóa công tác copy nầy.  Trong mô hình lập trình nhiều tầng (multi­tier programming model) mà ta gọi là  Windows DNA (Distributed Network Application), quá trình xử lý một công tác  được chia ra làm nhiều giai đoạn như: 1. Kiểm chứng các con số user mới điền vào các forms tại máy  khách (user interface)  2. Tính toán (business logic)  3. Truy cập cơ sở dữ liệu (database access)  Và mỗi giai đoạn nói trên có thể nằm trên một computer khác nhau. Nếu dùng Internet  thì giai đoạn 1 nói trên sẽ chạy trong WebBrowser bằng trang Web có chứa  JavaScript routines để kiểm chứng các con số user mới đánh vào. Còn các giai đoạn  kia có thể chạy trên WebServer. Dĩ nhiên giai đoạn 3 phải chạy trên WebServer, nơi  chứa cơ sở dữ kiện. .NET cho phép ta lập trình giai đoạn 1 để chạy trong Windows Forms. Còn các giai  đoạn kia có thể để y nguyên.  Như thế, giả dụ như ta có một hệ thống đặt hàng, ta có thể cho các telephone  operators dùng desktop (Winforms) application với một giao diện được tối ưu hóa,  chạy thật nhanh để phục vụ những người đặt hàng bằng điện thoại. Trong khi đó  khách hàng cũng có thể đặt hàng qua Internet WebBrowser như bình thường. Cả hai  nhóm users nầy dù có giao diện khác nhau nhưng đều xài chung các tầng business  logic và database access. Đây là một ưu điểm rất quan trọng của .NET mà ít ai chú ý. Nếu thiết kế khéo, ta có  thể lập trình để dùng chung hầu hết phần mềm trên desktop, distributed (phân tán),  Internet và Mobile (Mobile phone, Pocket­PC).  Những điểm căn bản của Windows Forms ? Trong các bài học và thí dụ trước đây ta đã nói qua, bây giờ ta tóm tắc những điểm  căn bản của Windows Forms: • Một Windows Form thật sự là một class. Trong .NET không có từ  đặc biệt như "form module" để dùng cho nó.  • Vì một form là một class nên ta không thể load nó mà không nói  thẳng thừng ra. Tức là trong VB6 nếu ta Show hay dùng đến một  Form thì nó tự động được loaded. Chẳng những thế thôi, cái  class Form2 được dùng như một variable Form2 luôn, tức là by  default ta có một Object tên Form2. Trong .NET ta phải khai báo  (declare) một variable tên myForm2 chẳng hạn rồi instantiate  form ấy như một Object của Form2 trước khi dùng nó.  • Tất cả mọi form đều thừa kế từ class  System.Windows.Forms.Form.  • Giống như tất cả các classes trong .NET Framework, Windows  Forms có constructors và destructors. Constructor của form tên là  Sub New, đại khái giống như Sub Form_Load trong VB6.  Destructor của form tên là Sub Dispose, đại khái giống như Sub  Form_Unload trong VB6.  • Cái visual forms designer của VS.NET nhét rất nhiều code để  instantiate form và đặt các controls vào form. Đó là code mà đáng  lẽ ta phải tự viết nếu ta dùng notepad để lập trình. Phần code nầy  thay thế cái phần nằm ở đầu tệp .frm của VB6 để diễn tả các  visual components của form. Mỗi lần ta thêm bớt các controls hay  thay thế các properties của controls trên form thì code generated  cho form được thay đổi theo. Do đó bạn nên tránh sửa đổi code  ấy, trừ khi biết chắc mình đang làm gì, hay là bạn làm một phiên  bản trước khi thay đổi để nếu lỡ kẹt thì restore code cũ.  • Event được xử lý bằng cách linh động hơn. Các events chứa  nhiều tin tức hơn. Một Event có thể được xử lý bởi nhiều controls  cùng một lúc và mỗi control có một cách xử lý khác nhau. Ngược  lại, nhiều Events khác nhau có thể được xử lý bằng một Event  Handler duy nhất.  Bạn tạo một chương trình Windows Forms bằng cách dùng IDE menu command File |  New | Project.. để hiển thị giao thoại New Project và chọn Template Windows  Application.  Trong thí dụ nầy, khi bạn click nút OK thì một subfolder tên (Name:)  WindowsApplication4 sẽ được tạo ra trong folder (Location:)  E:\NET\HongDevelopment\LessonPreparation để chứa các tệp của Project. Sau  nầy, khi bạn build, tức là compile chương trình, thì kết quả sẽ là một tệp .exe chứa  trong folder  E:\NET\HongDevelopment\LessonPreparation\WindowsApplication4\bin. Dĩ nhiên trước khi click nút OK bạn có thể sửa Name: hay Location: tùy ý. Ngoài ra,  vì bạn chọn Windows Application, nên project của bạn tự động có reference đến .NET  component System.Windows.Forms.dll. Để xem lướt qua namespace System.Windows.Forms, bạn hãy thử xúc tiến tạo cái  project WindowApplication4 nầy. Kế đó bạn chạy Object Browser bằng cách click  hình tam giác nhỏ của Class View icon rồi chọn Object Browser: Trong Object Browser, expand cái System.Windows.Forms tree để xem những types  được định nghĩa bên trong và các class members của Form: Kiến trúc (Architecture) của Windows Forms ? Nếu bạn xem gia phả của form, bạn sẽ thấy tổ phụ (đời thứ nhất) nó là class Object,  còn form là con cháu đời thứ bảy. Dưới đây là cái cây của gia phả form và một ít chú  thích: Thứ bậc các classes Chú thích Ông tổ trong .NET, superclass cao nhất từ đó sanh ra con Object cháu. Cung cấp các code cần thiết để quản lý cuộc đời của MarshalByRefObject objects. Cung cấp sự gầy dựng căn bản của IComponent interface Component và cho phép các chương trình khác nhau dùng chung một object Đây là base class của mọi component dùng để hiển thị. Nó hỗ trợ những khả năng liên hệ đến vóc dáng và công tác hiển thị từ Show, BringtoFront, Font, Color cho đến Dock, Control Anchor. Ngoài ra nó còn cung cấp các Events của keyboard, mouse và có method WndProc để cho ta truy cập các thông điệp của Windows. Cung cấp chức năng tự động cuốn khi có chứa bên trong ScrollableControl một control cần thêm chỗ để hiển thị. ContainerControl Cho phép một component chứa các controls khác. Form Cửa sổ chính của một chương trình. Các chức năng mới của Windows Forms Những Controls tàn hình được chứa riêng Một thay đổi rất tốt trong .NET từ VB6 là những controls không hiển thị lúc chạy thì khi  thiết kế chúng được chứa trong một cái mâm riêng phía dưới. Thí dụ như trong hình  dưới đây ta có Timer, Tooltip, Menus và các Dialogs được cho nằm trong một  component Tray. Muốn thay đổi properties của Control nào, ta chỉ cần chọn nó rồi right click và chọn  Properties.  Chọn Startup Form Để chỉ định StartUp Form của chương trình, bạn cần phải mở cửa sổ Properties của  Project để đánh vào Startup Object. Bạn có thể làm điều ấy bằng cách dùng IDE  menu command Project | Properties hay right click tên của Project trong Solution  Explorer rồi chọn Properties.  Vị trí ban đầu Nhiều lúc ta muốn form hiện ra ngay giữa màn ảnh khi chương trình khởi động.  VB.NET có thể làm việc ấy tự động nếu bạn set property StartPosition của nó thành  CenterScreen. Các vị trí khởi đầu bạn có thể set được liệt kê dưới đây: Trị số Vị trí khởi đầu Kết quả Hiển thị form ở vị trí theo giá trị của property Location của Manual form CenterScreen Hiển thị form ở ngay giữa màn ảnh CenterParent Hiển thị form ở ngay giữa form chủ (owner) của nó WindowsDefaultLocation Hiển thị form ở vị trí default của cửa sổ Hiển thị form ở vị trí default của cửa sổ, với kích thước default WindowsDefaultBounds của cửa sổ Borders của Form Thay đổi property FormBorderStyle sẽ ảnh hưởng những gì user có thể thay đổi  hay dùng về MaximizeBox, MinimizeBox, SizeGripStyle (mấy cái gạch chéo ở góc  dưới phải của cửa sổ) và HelpButton.  Luôn luôn nằm trên hết Một số chương trình có khả năng luôn luôn nằm trên hết, ngay cả khi nó không có  focus. Để thực hiện điều nầy trong VB6 ta phải gọi API. Trong VB.NET, forms có một  property mới tên là TopMost. Chỉ cần set TopMost của một form thành True thì nó  luôn luôn nằm trên hết.  Owned Forms (Forms có chủ) Khi một form có chủ, nó được minimized và closed theo form chủ của nó. Owned  forms, đôi khi còn được gọi là forms nô lệ, luôn luôn nằm lên trên form chủ của nó.  Dầu vậy, nó không cản trở form chủ nhận focus. Ta dùng method AddOwnedForm của form chủ để cho thêm owned form vào  collection of OwnedForms của nó như sau: Private Sub Form1_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim myForm2 As New Form2() myForm2.Show() Me.AddOwnedForm(myForm2) End Sub Form chủ có thể truy cập collection của các forms nô lệ qua property OwnedForms.  Dưới đây là code để loop qua các forms nô lệ của một form: Private Sub BtnListOwnedForms_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnListOwnedForms.Click Dim OwnedForm As Form For Each OwnedForm In Me.OwnedForms Console.Write(OwnedForm.Text) Next End Sub Form chủ có thể cắt bỏ (remove) một form nô lệ bằng cách dùng method  RemoveOwnedForm như:  Me.RemoveOwnedForm(myForm2) Khi một form không còn là nô lệ nữa, nó không hẳn bị unloaded, chỉ trở thành một  form tự do (không còn liên hệ với form chủ nữa) thôi. Chú ý sự khác biệt giữa form nô lệ và TopMost form là form nô lệ chỉ nằm trên form  chủ nó, trong khi TopMost form nằm trên tất cả mọi forms khác. TopMost form cũng  không bị minimized hay closed khi một form nào khác của chương trình bị minimized  hay closed.  Không phải mọi controls đều bị khoá (locked) Trong Vb6, ta có option Lock Controls trong Format menu. Khi ta chọn Option nầy  cho một form, tất cả controls đều bị khóa, ngay cả những controls mới được để vào  mặt form sau nầy.  Trong VB.NET, ta cũng có option Lock Control trong Format menu hay khi ta right click  một nhóm controls đã được chọn trên form. Nhưng thao tác khóa nầy chỉ hiệu lực đối  với các controls có sẵn trên form mà thôi. Một control mới được đặt lên form sau đó sẽ  không bị khóa. Điều nầy cho phép ta khóa những controls đã được để đúng vị trí, rồi  tiếp tục sắp đặt các controls mới mà không ngại vô tình làm di chuyển vị trí các  controls cũ.  Độ đậm (Opacity) của Form Có một property mới của form rất thú vị để dùng, dù rằng sự ích lợi hay mục đích của  áp dụng không rõ ràng. Đó là ta có thể thay đổi độ đậm của một form. Ta có thể làm  cho nó trong suốt khi set property Opacity của form bằng 0, hay cho nó mờ mờ như  ma nếu trị số của Opacity ít hơn 1. Bạn hãy thử đánh code dưới đây vào một form cho  Button1 chẳng hạn, rồi chạy chương trình và click Button1 ấy: Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Double For i = 0 To 1 Step 0.01 ' Opacity có trị số từ 0 (trong suốt) đến 1 (đậm đặt) Me.Opacity = i Next End Sub Form properties cho Cancel Button và Default Button Trong VB6, ta có thể set một button để nó như được clicked khi thật ra user bấm phím  Esc. Ta thực hiện điều nầy bằng cách set property Cancel của button ấy thành True.  Nó được gọi là Cancel button. Tương tự như thế, nếu ta set property Default của một button thành True, nó được  gọi là Default button, khi user bấm phím Enter Default button coi như được clicked. Trong VB.NET ta cũng có thể dùng các chức năng ấy, nhưng bây giờ ta không đá  động gì đến property nào của các buttons, mà lại set các properties CancelButton  và AcceptButton của chính form.  Khi ta click bên phải của property AcceptButton trong cửa sổ Properties thì danh sách  các buttons có sẵn trên form được liệt kê ra để ta chọn như dưới đây: Ngoài ra ta cũng có thể chọn các CancelButton và AcceptButton lúc đang chạy  chương trình, nhất là khi ta muốn bổ nhiệm các công tác nầy cho những buttons khác  vì form đang làm việc trong một trạng thái khác như trong code thí dụ dưới đây: Me.CancelButton = BtnCancel2 Me.AcceptButton = BtnAccept2
DMCA.com Protection Status Copyright by webtailieu.net