Các bài tập Microsoft .NET 161 Bài 12 Những chức năng mới trong giao diện cửa sổ của VB.NET (phần V) Toolbars Toolbars trong .NET đã được nâng cấp bằng cách thêm chức năng cho các ToolBarButtons trong collection của những buttons ấy. Để dùng thử Toolbar control, bạn hãy khởi động một Project mới và đặt một Toolbar vào form chính bằng cách doubleclick lên Toolbar icon trong Toolbox. Một Toolbar sẽ hiện ra nằm ngay dưới tiêu đề của form. Kế đó rightclick lên Toolbar ấy và chọn Properties để edit property Buttons Collection bằng cách click lên chữ (Collection) rồi click ba dấu chấm phía bên phải để hiển thị ToolbarButton Collection Editor. Bạn hãy Add vào Toolbar ba buttons với những đặc tính sau: • Đổi property Text của button thứ nhất (ToolbarButton1) ra Close vì ta muốn đóng chương trình khi user click lên button ấy. By default Style của ToolbarButton là PushButton. • Đổi property Style của button thứ nhì (ToolbarButton2) ra Separator vì ta muốn dùng nó để tạo khoảng cách giữa button thứ nhất và button thứ ba. • Đổi property Text của button thứ ba (ToolbarButton3) ra Background Colour và property Style ra DropDownButton vì ta muốn dùng nó như một Combobox. Khi chạy thử chương trình ta sẽ thấy hình giống như dưới đây: Các bài tập Microsoft .NET 162 Bây giờ ta sẽ viết code để xử lý Event Click của Toolbar. Chỉ có một handler, Sub ToolBar1_ButtonClick, được dùng cho tất cả các buttons. Ta phân biệt Button nào dựa vào Index của nó, giống giống như một array of buttons trong VB6. Nếu user click button thứ nhất ta sẽ có ToolBar1.Buttons.IndexOf(e.Button) bằng 0, lúc ấy ta sẽ Close form chính. Private Sub ToolBar1_ButtonClick( ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles ToolBar1.ButtonClick Select Case ToolBar1.Buttons.IndexOf(e.Button) Case 0 ' Close Button Me.Close() Case 1 ' Never happens because the Button is a Separator Case 2 ' MessageBox.Show("You clicked the third button") End Select End Sub Nếu không muốn dùng ToolBar1.Buttons.IndexOf(e.Button), bạn cũng có thể so sánh Buttons với operator Is như sau: If e.Button Is ToolBarButton1 Then Me.Close() ElseIf e.Button Is ToolBarButton3 Then Các bài tập Microsoft .NET 163 MessageBox.Show("You clicked the third button") End If Kế đó chúng ta cho đặt một ContextMenu tên ContextMenu1 vào form và assign nó vào property DropDownMenu của button thứ ba như trong hình dưới đây: Nếu không muốn assign ContextMenu1 vào button thứ ba trong lúc thiết kế, bạn có thể thực hiện việc ấy bằng code lúc form mới load như sau: Private Sub frmToolbar_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ToolBarButton3.DropDownMenu = ContextMenu1 End Sub Bạn hãy edit hai menuItems cho ContextMenu1: một cái tên mnuXám với Text là Xám và cái kia tên mnuTrắng với Text là Trắng. Khi chạy chương trình, nếu bạn click cái thanh có dấu tam giác đen nằm bên phải button thứ ba, ContextMenu1 sẽ hiện ra để bạn dùng. Nếu bạn click button thứ ba, chương trình cũng generate một Click Event nhưng hiện giờ ta không dùng nó, chỉ hiển thị một sứ điệp nhỏ để xác định là có Event Click ấy. Như thế, ta thấy .NET ghép một ContextMenu vào một ToolbarButton để biến nó thành một DropDownMenu. Có điều sau khi user đã chọn một Item trong ContextMenu/DropDownMenu, Text của Item đó không được hiển thị giống như trong một ComboBox. Nếu bạn khó tính và muốn có chuyện đó thì phải tự làm lấy như cho thấy trong code dưới đây: Private Sub frmToolbar_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ToolBarButton3.DropDownMenu = ContextMenu1 ToolBarButton3.Text = "Xám" End Sub Private Sub mnuXám_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuXám.Click MessageBox.Show("Bạn chọn màu Xám") Các bài tập Microsoft .NET 164 ToolBarButton3.Text = "Xám" End Sub Private Sub mnuTrắng_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuTrắng.Click MessageBox.Show("Bạn chọn màu Trắng") ToolBarButton3.Text = "Trắng" End Sub Khi chạy chương trình bạn sẽ thấy như sau: ListBox Items là một collection of Strings Mới dùng đến, ta sẽ thấy .NET ListBox rất giống ListBox trong VB6. Tiện ở chỗ bây giờ ta có thể edit các string Items của ListBox trong một editor nho nhỏ sẽ hiện ra khi ta click vào chữ (Collection) của property Items: Các bài tập Microsoft .NET 165 Các Items được chứa trong một collection tên Items, do đó ta có thể làm việc với mọi chức năng của một collection như Add, Clear, Insert, Remove, RemoveAt, Count .v.v Thí dụ như ta cho thêm bốn Items vào Listbox1 lúc Form_Load như sau: Private Sub frmListbox_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' Add individual items ListBox1.Items.Add("Kăng-gu-ru") ListBox1.Items.Add("Công") ' Add more than one items by instantiating an object with items list enclosed in curly brackets {} ListBox1.Items.AddRange(New Object() {"Đà điểu", "Gấu Panda"}) End Sub Nếu trong khi chạy chương trình, bạn thêm nhiều Items vào ListBox và muốn tránh update display Listbox nhiều lần, bạn có thể kẹp code giữa hai statements BeginUpdate và EndUpdate như sau: ' Shutdown the painting of the ListBox as items are added. . Các bài tập Microsoft .NET 161 Bài 12 Những chức năng mới trong giao diện cửa sổ của VB.NET (phần V) Toolbars Toolbars. muốn dùng nó như một Combobox. Khi chạy thử chương trình ta sẽ thấy hình giống như dưới đây: Các bài tập Microsoft .NET 162 Bây giờ ta sẽ viết code để xử lý Event Click của Toolbar. Chỉ có một handler,. sau: If e.Button Is ToolBarButton1 Then Me.Close() ElseIf e.Button Is ToolBarButton3 Then Các bài tập Microsoft .NET 163 MessageBox.Show("You clicked the third button") End If Kế đó