Bài 11
Nhng chc năng mi trong giao din ca s ca
VB.NET (phn IV)
Các control Providers
Trong Windows Forms có mt gia đình controls mi mà ta ch có th dùng khi chúng
đi chung vi các controls khác trên cùng mt form. Chúng được gi là Provider
Controls và có đặc tính là khiến cho các property mi hin ra trong các controls khác.
Provider Controls không hin th trên form lúc chy program. Do đó chúng nm riêng
trong Component Tray lúc ta thiết kế. Hin gi có 3 Provider Controls : HelpProvider,
ToolTip và ErrorProvider. C ba đều làm vic mt cách tương t nhau.
Controls HelpProvider và ToolTip
Trong VB6, các controls có property HelpContextID để ta ch định khi user bm nút
F1 thì chương trình s hin th Help đúng trang có tr s HelpContextID trong Help
file. Còn ToolTip là mt Textstring property ca mi control. Ta ch cn dùng ca s
Properties để cho vào ToolTip text ca mt control là trong lúc chy chương trình, khi
nào ta để mouse cursor nm lên control là chương trình s hin th ToolTip text.
Hai th y không còn dùng trong Windows Forms na. Thay vào đó, ta phi đặt các
Provider Controls lên form để thc hin các công tác tương đương.
Control HelpProvider cho phép các controls khác ch định context sensitive help (tr
giúp trong tình hung đương thi) hin th khi user bm nút F1. Khi mt control
HelpProvider (gi là HelProvider1 by default) được thêm vào mt form, thì mi controls
trên form đu s có thêm các properties dưới đây, chúng s hin th trong ca s
Properties sau khi ta chn mt control.
Property Áp d ng
HelpString on
HelpProvider1
Khi control đ c focus, user b m nút F1 s popup Tooltip HelpStringượ
cho control
HelpTopic on
HelpProvider1
Cung c p m t Topic cho control đ dùng trong Help file cho context-
sensitive help. Control HelpProvider1 có m t property đ ta ch đ nh
dùng Help file nào
ShowHelp on
HelpProvider1 Xác đ nh là control HelpProvider có Active cho control n y không
Mt khi property HelpString đã được cho mt Textstring thì trong lúc control nhn
được focus, nếu user bm nút F1 mt Tooltip s hin th Textstring y. HelpProvider
có mt property để dn đến mt Help file, hoc là HTMLHelp file, hoc là Win32Help
file, và tr s trong property HelpTopic s ch dn đến topic y trong Help file.
Trong lúc chương trình chy, ta cũng có th thay đi tr s HelpString ca Textbox1
như sau:
HelpProvider1.SetHelpString(Textbox1, "M t HelpString m i đ c dùng t i ượ
đây.")
Control ToolTip cũng hot động tương t, nhưng đơn gin hơn. Nó ch cho thêm mt
property mi tên ToolTip on ToolTip1 vào mi control, gi d tên ca ToopTip
provider là ToolTip1. Property ny làm vic y ht như ToolTipText trong VB6.
Trong lúc chương trình chy, ta cũng có th set cho property Tooltip ca Textbox
txtName mt tr s Textstring như sau:
ToolTip1.SetToolTip(txtName, "Xin vui lòng đánh tên b n vào đây")
Control ErrorProvider
Thông thường sau khi user đin xong các d kin vào mt form thì s click mt button
OK hay Submit chng hn. Để tránh trưng hp cp nht data ca mt record vi
nhng d kin bt hp l, ta thưng kim tra li d kin nm trong tng Textbox trên
form và hin th mt thông đip để nhc nh và gii thích cho user khi có error. Nếu
user lm li nhiu Textboxes thì có th s có nhiu thông đip hin th ln lưt cái
ny tiếp theo cái kia, mi thông đip liên h đến mt Textbox có error. Cách y cũng
tm được, nhưng có th khiến cho user bc mình.
Control ErrorProvider cung cp mt cách đơn gin và thân thin để cho user biết
Textbox nào có d kin bt hp l. Control ErrorProvider cho các controls trên cùng
form mt property mi gi là Error on ErrorProvider1 ( gi d là control
ErrorProvider mang tên ErrorProvider1).
Trong lúc chương trình chy, nếu kim thy mt Textbox có li ta assign mt
TextString vào property Error on ErrorProvider1 ca Textbox y. Lúc by gi mt icon
đỏ hình du chm than trng s hin th bên phi Textbox có Error. Nếu user để
mouse cursor lên trên icon y thì chương trình s hin th mt Tooltip vi tr s
TextString ca property Error on ErrorProvider1 ging như trong hình dưới đây:
Công vic assign mt TextString vào property Error on ErrorProvider1 ca mt
Textbox có th được coded như sau:
Private Sub BtnOK_Click( ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BtnOK.Click
' Set error if TextBox txtName is blank
If txtName.Text = "" Then
' Assign error ToolTip message to Textbox txtName
ErrorProvider1.SetError(txtName, "You must supply a name!")
End If
End Sub
Trên đây ta dùng Event Click ca button BtnOK đ kim tra d kin trong mi
Textbox. Có mt Event ca các controls mà ta cũng có th dùng trong công tác kim
tra d kin ca mt TextBox. Đó là Event Validating. Để gây ra Event Validating ta
cn phi dùng property CauseValidation ca các controls. Thông thường, property
CauseValidation ca các controls được set thành True. TextBox txtName ch to ra
Event Validating khi chính property CauseValidation ca nó là True và khi focus được
di chuyn đến mt control khác có property CauseValidation là True.
Xin lưu ý là không nht thiết Event Validating được to ra khi txtName mt focus. Khi
txtName mt focus thì Textbox txtAge được focus (gi d txtAge có tr s TabOrder
ngay sau txtName) , nhưng nếu property CauseValidation ca txtAge không phi là
True thì phi đợi đến khi focus đáp lên mt control có property CauseValidation là
True txtName mi gây ra Event Validating.
Ta có th code cho Sub txtName_Validating như sau:
Private Sub txtName_Validating( ByVal sender As Object, ByVal e As
System.ComponentModel.CancelEventArgs) _
Handles
txtName.Validating
' Set error if TextBox txtName is blank
If txtName.Text = "" Then
' Assign error ToolTip message to Textbox txtName
ErrorProvider1.SetError(txtName, "You must supply a name!")
Else
' Clear the error ToolTip message for Textbox txtName and make error
Icon invisible
ErrorProvider1.SetError(txtName, "")
End If
End Sub
Cái icon đỏ hình du chm than trng là default icon ca ErrorProvider. Mun dùng
mt icon khác ta ch cn assign icon y vào property Icon ca ErrorProvider.
Menus
Mc du Menu Editor ca VB6 cung cp đầy đủ các phương tin để làm Menu và
tương đối d dùng, VB.NET cho ta mt giao din càng thân thin và t nhiên hơn để
thiết kế Menu.
Menu được thêm vào form dưới dng mt control. Tuy Menu control nm trong mt
mâm components phía dưới, nhưng trong lúc thiết kế, Menu hin ra trong form y như
lúc Runtime và bn ch cn đin vào các menuitems cn thiết. Có hai loi menus:
Main Menu (Menu dùng thông thường) và Context Menu (dùng cho Pop-Up).
Bn có th ti v chương trình ErrorProvider ny ti đây.
Menus
Main Menu là Menu căn bn mà bn thy nó dính vào cnh trên ca mt form. Để d
gii thích, ta s dùng mt thí d to ra mt Editor tht đơn gin bng VB.NET. Bn
hãy khi động mt Windows Application mi và thêm mt Textbox vào trong form
chính. Set property MultiLine ca Textbox thành True đ nó có th hin th nhiu
hàng, đồng thi Stretch (kéo dãn ra) cái Textbox cho ln ra làm nơi ta có th đánh vào
mt bài text.
Kế đó, thêm mt Main Menu vào form. Cái menu Designer s kích động và bn ch
cn đánh vào chi tiết các menuItems và dùng ca s Properties để set các
parameters.
Khi nào bn select control Main Menu trong mâm components là bn có th edit các
MenuItems. Mun làm vic vi MenuItem nào thì select MenuItem đó. Nhng ch có
ch Type Here là đề ngh cho bn đánh thêm vào mt MenuItem (Type Here nm
phía dưới) , mt MenuCommand mi (Type Here nm bên phi mt MenuCommand)
hay mt MenuSubItem (Type Here nm bên phi mt MenuItem).
Mun insert mt ln ngang gia MenuItem Paste và MenuItem Clear All, bn select
MenuItem Clear All ri right click và chn Insert Separator trong Pop-Up Menu.