Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 18 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
18
Dung lượng
358,63 KB
Nội dung
Các tập Microsoft NET • DialogResult.Cancel • DialogResult.Ignore • DialogResult.No • DialogResult.None • DialogResult.OK • DialogResult.Retry • 127 DialogResult.Yes Có điểm tiện DialogResult set cho trị số dialog dấu (hidden) cách tự động Cách đơn giản để set trị số cho DialogResult assign trị số cho property DialogResult button Khi user click button DialogResult hộp giao thoại lấy trị số property DialogResult button hộp giao thoại Hide Để biểu diễn ShowDialog VB.NET, kèm theo mã nguồn thí dụ Trong thí dụ ta tạo form tên frmDialog có hai button tên OK Cancel Ta set property DialogResult button OK thành OK Các tập Microsoft NET 128 property DialogResult button Cancel thành Cancel Form frmDialog hồn tồn khơng có hàng code Form chương trình, Form1, có button tên BtnShowDialog với code cho Event Click đây: Private Sub BtnShowDialog_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnShowDialog.Click ' Declare and instantiate a Dialog Box Dim Dialog As New frmDialog() ' 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 chạy chương trình click button ShowDialog Khi Dialog box hiển thị, thử click hai buttons So sánh với VB6, ta thấy dùng Dialog Box VB.NET đơn giản tự nhiên Nếu không dùng Property DialogResult button Dialog Box để trả kết DialogResult, ta dùng code Dialog form sau: Me.DialogResult = DialogResult.Retry Các tập Microsoft NET 129 Hàng code set DialogResult Dialog form thành DialogResult.Retry kềm theo phản ứng phụ Hide Dialog Box Calling form truy cập kết DialogResult.Retry Sự khác biệt đặt vị trí cho Forms Controls VB.NET có chức positioning layout tương tợ VB6, cách thực thi khác Property Location Thay vào properties Left Top VB6, forms controls VB.NET có property Location Property Location nhận trả structure tên Point, có tọa độ X Y tương ứng với Left Top mà ta dùng trước Structure point dùng nhiều áp dụng đồ họa GDI+ (Graphic Devices Interface plus) NET Thật ra, code ta dùng Top Left xưa Nhưng Top Left không cửa sổ Properties forms hay controls Để định vị trí cho form, ta code sau: Me.Location = (New Point(200, 100)) Property Size Property Size VB.NET có ý niệm property Location, có điều tương xứng với Width Height Property Size nhận trả structure tên Size, có chiều cao chiều rộng để áp dụng lúc thay chiều Giống Left Top, code ta dùng Width Height xưa Nhưng Width Height không cửa sổ Properties forms hay controls Để thay đổi Size form, ta code sau: Me.Size = (New Size(300, 400)) ReSize nhiều controls VS.NET cho ta chức Resize nhiều controls lúc Trước hết bạn Select nhiều controls cách drag dây thun (rubber band) bao quanh chúng hay ấn nút Ctrl lúc click Các tập Microsoft NET 130 controls Kế đó, tập trung việc resize vào control, controls resized theo Các features thiết kế chung cho Controls Tab Order Controls Sắp đặt thứ tự Tab controls (Tab Order) form phiền phức VB6 VS.NET cho ta feature tiện dụng để làm việc Để khởi động feature ấy, ta dùng IDE menu command View | Tab Order Nó hiển thị số nhỏ góc trái control, cho thấy trị số Tab Index control Bây ta cần click lên control theo thứ tự mà ta muốn Dưới screenshot form sau user định Tab Order cho controls Muốn khỏi Tab Order mode, ta bấm menu command View | Tab Order lần Ghi chú:Trong VB.NET nhiều controls có Tab Index Trong trường hợp ấy, thứ tự Tab chúng định dựa vào z-order Control có z-order cao nhận focus trước nhóm Z-order control thay đổi cách right click control chọn Bring to Front Control Arrays Khi nghe nói VB.NET khơng hỗ trợ Control Arrays bạn buồn năm phút Có hai lý bạn cần Control Arrays: Dùng Event handler (thí dụ Sub BtnBrowse_Click) để xử lý Event từ nhiều Controls tương tự Các tập Microsoft NET 131 Để dynamically tạo thêm Controls form lúc chạy program (at runtime) May thay, VB.NET cung cấp cho ta phương tiện khác để khỏi phải thua thiệt VB.NET cho phép ta linh động bổ nhiệm methods để xử lý Events controls Điểm thứ bạn ý bạn dùng tên cho nhiều controls Property Index bị khai tử Trong VB.NET bạn dùng Event handler để xử lý Events đến từ controls tương tự Trước ta dựa vào Index để biết Event phát xuất từ control Bây bạn dựa vào parameter Sender Để minh họa điểm này, ta viết chương trình có hai buttons, Button1 Button2, nằm form Double click Button1 để viết code xử lý Event Button1.Click Muốn dùng Event Sub để xử lý Event Click đến từ Button2, bạn cần thêm chữ Button2.Click vào cuối Handles List Sub Button1_Click Để cho tổng quát ta rename Sub Button1_Click thành Sub Button_Click Bây ta viết vài dòng code đơn giản để hiển thị cho biết Event Click đến từ Button nào: ' Note that we change the name of the Sub from Button1_Click to Button_Click to ' make it more general, since we're going to use this same Sub to handle Click ' Events originated from many different Buttons ' Also note that we add the word Button2.Click to the end of Sub Button_Click declaration Private Sub Button_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Button1.Click, Button2.Click Dim btnClicked As Button ' Type cast sender to Button btnClicked = CType(sender, Button) ' Show what button was clicked MessageBox.Show("You clicked """ & btnClicked.Text & """") End Sub Các tập Microsoft NET 132 Thử chạy chương trình click Button2, bạn thấy hình đây: Để biểu diễn chức quản lý Event Handling at runtime, ta đặt button tên BtnAddNewButton vào form để dynamically add button thứ ba tên Button3 Ta muốn button dùng Sub Button_Click để xử lý Event Click Vì khơng thể đánh thêm chữ Button3.Click vào cuối câu Sub Button_Click trước ta làm với Button2.Click, nên at runtime ta dùng statement: ' Tell system to use Button_Click as Event Handler for the Event Button3.Click AddHandler newButton.Click, AddressOf Me.Button_Click Mã nguồn đầy đủ Sub BtnAddNewButton_Click liệt kê đây: Private Sub BtnAddNewButton_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAddNewButton.Click ' Declare and instantiate a Button Dim newButton As New Button() ' Set it up on the form With newButton Text = "Button3" ' Text of this new button Location = New Point(230, 120) ' define its location on the form Size = New Size(88, 40) ' define its size End With ' Add the new button to the form's collection of controls Me.Controls.Add(newButton) Các tập Microsoft NET 133 ' Tell system to use Button_Click as Event Handler for the Event Button3.Click AddHandler newButton.Click, AddressOf Me.Button_Click End Sub Khi user click BtnAddNewButton, Button3 với Size(88,40) tạo đặt Location(230,120) form Kế chương trình thực hai chuyện quan trọng: Add button vào collection of controls form đăng ký (register) việc dùng Sub Button_Click làm Event Handler Event Click Làm xong chuyện rồi, bạn chạy chương trình, click AddNewButton để thêm Button3 vào form, kế click Button3, bạn thấy hình đây: Các tập Microsoft NET 134 Bài 10 Những chức giao diện cửa sổ VB.NET (phần III) Tự động Resize định chỗ (positioning) Những chương trình ứng dụng chun nghiệp ta mua ngồi chợ để dùng thường thường có đặc tính resize controls hay định vị trí controls form cách tự động Nếu bạn thử thêm chức cho chương trình áp dụng viết VB6 mình, bạn thơng cảm coi khơng phải chuyện nhỏ Tưởng tượng ta phải ghi nhớ vị trí kích thước control form để lần user resizes form ta phải theo resize định vị trí control Trong lúc thiết kế ta phải cho user phương tiện để định họ muốn control cư xử form resize Để chứa tin tức ta dùng property Tag control ta dùng registry Chỉ việc đọc ra, viết vào để cập nhật hoá tin tức đủ mệt, chưa nói đến chuyện tính tốn để resize định vị trí control Do đó, nhiều làm biếng ta dùng đại third party ActiveX để giúp ta làm chuyện .NET cho ta thêm properties Anchor Dock cho control Ngồi NET cịn cung cấp control Splitter phép ta nắm phân hai kéo qua, kéo lại hay kéo lên, kéo xuống tùy thích, để mở rộng thêm bên bên bị thu hẹp Cái áp dụng Splitter thông dụng Windows Explorer Trong ta có hai phần: bên trái Treeview chứa disk drives file folders, bên phải Listview chứa icons hay chi tiết folder files Muốn xem Treeview nhiều hơn, ta nắm phân hai kéo qua bên phải chút Các tập Microsoft NET 135 Anchoring (bỏ neo) Khi tàu bỏ neo đỗ Dù nước chảy nào, tàu nằm n chỗ cột vào neo Control NET có property Anchor để ta định buộc vào góc form: Left, Right, Bottom hay Top Trong lúc thiết kế, sau select control (thí dụ Button1), ta vào cửa sỗ Properties click hình tam giác nhỏ bên phải property Anchor Một hình vng với bốn ráp lại giống hình chữ thập màu trắng Mỗi tượng trưng cho góc mà ta định để cột control vào form Khi ta click thanh, đổi màu thành xám đậm, chữ tương ứng với sau hiển thị textbox area combobox Anchor Thí dụ ta click vào hai hai bên, ta có Bottom, Left, Right hình đây: Các tập Microsoft NET 136 Khi Button1 có Anchor Bottom, Right góc phải form di chuyển resize, Button1 chạy theo góc ấy: Nếu Button1 có Anchor Left, Right, Bottom form resizes cho lớn ra, Button1 giữ khoảng cách từ đến ba cạnh Left, Right, Bottom form khơng đổi Do phải nở rộng hình đây: Nếu Button1 có Anchor Top,Bottom,Left, Right form resizes, Button1 giữ khoảng cách từ đến bốn cạnh Left, Right, Top, Bottom Các tập Microsoft NET 137 form khơng đổi Do phải nở rộng hay thu nhỏ chiều cao lẫn chiều rộng hình đây: Vì property Anchor có hiệu lực lúc ta thiết kế, nên bạn resize form lúc thiết kế, control có Anchor property set resize di chuyển theo Có thể bạn khơng muốn chuyện xãy ra, nên tốt set property Anchor control sau thiết kế form xong hết Docking (gắn vào) Khi ta Dock control vào cạnh form có nghĩa ta dán dính vào cạnh Áp dụng ta thường thấy Docking ToolBar StatusBar ToolBar dock vào phía form, cịm StatusBar dock vào phía form Chúng dãn chiếm từ trái qua phải form, user định chiều rộng chúng Khi form resized ToolBar StatusBar dãn hay co vào theo chiều rộng form Property Dock control NET giống giống property Align control VB6 StatusBar Ta dán control vào bốn cạnh form, khơng có chuyện bắt cá hai, ba tay trường hợp Anchor neo vào Left, Right, Bottom lúc Tuy nhiên, property Dock có trị số Fill để nói control chiếm hết bên phần cịn lại container Trong lúc thiết kế, sau select control (thí dụ Label1), ta vào cửa sỗ Properties click hình tam giác nhỏ bên phải property Dock Một hình Các tập Microsoft NET 138 vng nhiều màu xám Mỗi tượng trưng cho cạnh mà ta định để dán control vào form (Top, Bottom, Left hay Right), hình vng tượng trưng cho trị số Fill, chót có chữ None cho phép ta xóa khơng chọn trị số Dock Khi ta click thanh, trị số Docking tương ứng hiển thị textbox area combobox Dock Giả sử ta set Property TextAlign Label MiddleCenter cách chọn xám nằm số tượng trưng cho vị trí Text nằm Label1 hình đây: Các tập Microsoft NET 139 Khi chạy chương trình resize form cho lớn ra, ta thấy Label1 dãn hai bên, không tăng bề cao, Text Label1 luôn nằm Nếu bạn tìm cách dock nhiều controls vào cạnh form VB.NET phải định control nằm sát cạnh Qui ước thứ tự ngược lại với thứ tự z-order Tức z-order, control nằm lại dock trước vào cạnh form Do đó, bạn dock hai controls vào cạnh, muốn control nằm xa cạnh dock trước (tức sát cạnh nhất) right click control chọn Send To Back Nếu bạn muốn chừa khoảng trống control cạnh container set Property DockPadding container Tự trước đến ta dùng form để đại diện container chứa controls Thật container Panel Bạn set Property DockPadding cạnh Các tập Microsoft NET 140 container khác cách click dấu + bên trái chữ DockPadding cửa sổ Properties để mở chi tiết hình đây: Bạn set tất Property DockPadding trị số cách dùng All setting Control Splitter Bây bạn hiểu rõ đặc tính, khác biệt cách dùng hai properties Anchor Dock control, sau ta áp dụng kiến thức vào việc thiết kế dùng Splitter form Nếu với Splitter bạn dễ bị bực dùng Do đó, bạn thử làm theo bước sau đây: Tạo Application mới, đặt Panel lên phía trái form để chíếm bên trái form cách set property Dock thành Left Ta gọi Panel Panel1 Đặt Splitter lên form (nhớ tránh đặt lên Panel1 Panel loại container nên chứa Splitter được) Splitter tự động dock Left vào form tức nằm bên phải Panel1 Chọn property BoderStyle Splitter1 làm FixedSingle cho dễ thấy Đặt button lên Panel1 set property Anchor thành Top, Left, Right Bây form giống đây: Các tập Microsoft NET 141 Kế đó, đặt Panel lên bên phải form, gọi Panel2, set property Dock thành Fill Có nghĩa ta muốn Panel2 chiếm hết phần lại bên phải form Thêm vào Panel2 Button, gọi Button2, set property Anchor thành Top, Left, Right Khi chạy chương trình, lần bạn nắm Splitter kéo qua phải Button1 dãn Button2 co lại: Các tập Microsoft NET 142 Ngược lại, bạn nắm Splitter kéo qua trái Button1 co Button2 dãn lại: Trong thí dụ ta để yên chiều rộng Splitter, bình thường ta làm cho hẹp Nếu Splitter hẹp khó thấy, bạn cho màu đỏ rực lúc thiết kế để dễ thấy Khi thiết kế xong hết rồi, bạn đổi lại thành màu dịu Nếu bạn muốn chia Panel2 thành hai phần, ngăn cách Horizontal Splitter sao? Ta xem Panel2 form vậy, tức Các tập Microsoft NET 143 hai containers, loại control đựng nhiều controls, lập lại bước sau: Đặt Panel lên phía Panel2, gọi Panel3 set property Dock thành Top Đặt Splitter lên Panel2 (nhớ tránh đặt lên Panel3), gọi Splitter2 set property Dock thành Top Resize Splitter2 cho dẹp lại đổi property Backcolor thành ControlDark cho dễ thấy Đặt Panel lên phía Panel2, gọi Panel4 dời Button2 từ Panel2 qua Panel4 cách Cut and Paste Set property Dock Panel4 thành Fill Bây chạy chương trình nắm kéo Splitter2 lên xuống Tóm lại, muốn dùng control Splitter form hay panel ta đặt PanelX với Docking Left hay Top lên trước, kế đặt Splitter với loại Docking với PanelX, đặt PanelY với Docking Fill Các tập Microsoft NET 144 Bài 11 Những chức giao diện cửa sổ VB.NET (phần IV) Các control Providers Trong Windows Forms có gia đình controls mà ta dùng chúng chung với controls khác form Chúng gọi Provider Controls có đặc tính khiến cho property controls khác Provider Controls không hiển thị form lúc chạy program Do chúng nằm riêng Component Tray lúc ta thiết kế Hiện có Provider Controls : HelpProvider, ToolTip ErrorProvider Cả ba làm việc cách tương tự Controls HelpProvider ToolTip Trong VB6, controls có property HelpContextID để ta định user bấm nút F1 chương trình hiển thị Help trang có trị số HelpContextID Help file Còn ToolTip Textstring property control Ta cần dùng cửa sổ Properties vào ToolTip text control lúc chạy chương trình, ta để mouse cursor nằm lên control chương trình hiển thị ToolTip text Hai thứ khơng cịn dùng Windows Forms Thay vào đó, ta phải đặt Provider Controls lên form để thực công tác tương đương Control HelpProvider cho phép controls khác định context sensitive help (trợ giúp tình đương thời) hiển thị user bấm nút F1 Khi control HelpProvider (gọi HelProvider1 by default) thêm vào form, controls form có thêm properties đây, chúng hiển thị cửa sổ Properties sau ta chọn control Property Áp dụng ... với loại Docking với PanelX, đặt PanelY với Docking Fill Các tập Microsoft NET 14 4 Bài 11 Những chức giao diện cửa sổ VB.NET (phần IV) Các control Providers Trong Windows Forms có gia đình controls... phải Panel1 Chọn property BoderStyle Splitter1 làm FixedSingle cho dễ thấy Đặt button lên Panel1 set property Anchor thành Top, Left, Right Bây form giống đây: Các tập Microsoft NET 14 1 Kế đó,... để thêm Button3 vào form, kế click Button3, bạn thấy hình đây: Các tập Microsoft NET 13 4 Bài 10 Những chức giao diện cửa sổ VB.NET (phần III) Tự động Resize định chỗ (positioning) Những chương