Bài 9
Những chức năng mới trong giao diện cửa sổ của
VB.NET (phần II)
Sự khác biệt trong các Hộp Giao Thoại (Dialog Boxes)
Trong VB6, các hộp giao thoại thật ra là những form bình thường nhưng
được hiển thị với parameter vbModal, tức là trong Modal mode. Điều nầy
khíến cho hộp giao thoại trở nên form tích cực (active form) duy nhất trong
chương trình cho đến khi nó đi khuất.Một hộp giao thoại cần một phương
tiện để liên lạc với form gọi nó (calling form). Trong VB6, ta giải quyết vấn
đề nầy bằng cách chế ra một property tạm gọi là Action. Ta dùng Read-
only property Action như sau trong một hộp giao thoại có hai buttons,
OK và Cancel:
' VB6 code used for Dialog Boxes
Public Enum dialogAction
actionOK = 1
actionCancel = 2
End Enum
Dim mAction As dialogAction
Public Property Get Action() As dialogAction
Action = mAction
End Property
Private Sub cmdOK_Click()
' Get here when user click the OK button
mAction = actionOK
' Hide the Dialog Box to return control to calling form
Me.Hide
End Sub
' code goes here for normal processing
Case actionCancel
' code goes here for user canceling
End Select
Unload Dialog ' Now we can unload the dialog box
Có hai sự thay đổi quan trọng trong VB.NET, đó là dùng ShowDialog và
DialogResult.
ShowDialog thay vì Show vbModal
Argument vbModal không được hỗ trợ trong VB.NET. Thay vào đó, một
form có thể dùng method ShowDialog. Dưới đây là sự so sánh của
coding trong VB6 và VB.NET.VB6 code:
Dim Dialog As frmDialog
Set Dialog = New frmDialog ' Instantiate a Dialog Box
' Show dialog box in Modal mode
Dialog.Show vbModal
VB.NET code:
Dim Dialog As New frmDialog()
' Show dialog box in Modal mode
Dialog.ShowDialog
Để ý là trong VB.NET ở hàng code đầu ta có thể kết hợp hai chuyện khai
báo và instantiate form mới trong một statement. Hàng code cuối cho thấy
sự thay đổi từ Show vbModal qua ShowDialog.
DialogResult
Trong VB.NET, khi một form khải thị bằng method ShowDialog, nó đã dự
bị sẵn một property tên là DialogResult để calling form có thể truy cập.
DialogResult có thể mang một trong những trị số enumerated sau đây:
•
DialogResult.Abort
•
DialogResult.Cancel
' Show the Dialog Box in Modal mode
Dialog.ShowDialog()
' get here after user has clicked a button and the Dialog box has hidden
' Process the DialogResult
Select Case Dialog.DialogResult
Case DialogResult.OK
MsgBox("User clicked OK, se please go ahead")
Case DialogResult.Cancel
MsgBox("Sorry, but User clicked Cancel")
End Select
Dialog = Nothing ' Dispose the Dialog Box
End Sub
Bạn có thể chạy chương trình rồi click button ShowDialog. Khi Dialog box
hiển thị, thử click một trong hai buttons trên ấy.So sánh với VB6, ta thấy
dùng Dialog Box trong VB.NET đơn giản và tự nhiên hơn.Nếu không dùng
Property DialogResult của một button trong Dialog Box để trả về kết quả
DialogResult, ta cũng có thể dùng code trong Dialog form như sau:
Me.DialogResult = DialogResult.Retry
Hàng code trên set DialogResult của Dialog form thành DialogResult.Retry
và kềm theo phản ứng phụ là Hide Dialog Box. Calling form sẽ truy cập
được kết quả DialogResult.Retry nầy.
Sự khác biệt về sắp đặt vị trí cho Forms và Controls
VB.NET có những chức năng về positioning và layout tương tợ như trong
VB6, nhưng cách thực thi hơi khác.
Property Location
Thay vào các properties Left và Top trong VB6, forms và controls trong
VB.NET có property Location. Property Location nhận và trả về một
structure tên Point, có tọa độ X và Y tương ứng với Left và Top mà ta
dùng trước đây. Structure point được dùng trong nhiều áp dụng về đồ họa
trong GDI+ (Graphic Devices Interface plus) của .NET.Thật ra, trong