chuong 4

Chương 4: Giới thiệu về các điều khiển (Control)

Đặng Thành Trung

Nội dung chính

 Bổ sung Control vào Window Form

 Thay đổi thuộc tính của control

 Bắt các sự kiện của Control

 Các hộp thoại

 Một số Window Form Control

 Tạo ra Menu

 Xây dựng ứng dụng MDI

1. Bổ sung Control vào Window Form

Sử dụng Windows Form Designer

 Control được đặt lên bề mặt của đối tượng Container.

 Đối tượng container bao gồm: Window Form, Panel, Group Box.

 Window Form Designer cung cấp ToolBox (chọn View/ToolBox hoặc Ctrl+Alt+X) có chứa các loại Control khác nhau.

 Kéo thả Control từ ToolBox lên Form và sắp xếp chúng theo ý muốn.

Bổ sung Control bằng mã lệnh

 Bổ sung Control lên Form bằng mã lệnh gồm 3 bước sau:

 Tạo ra biến private đại diện cho từng Control mà ta muốn đặt lên Form.

 Trong form, viết mã lệnh để khởi tạo từng Control và thay đổi nó bằng cách sử dụng thuộc tính, phương thức và sự kiện.

 Bổ sung từng control vào Control Collection của Form

 Gán Form hiện thời là Parent Container của Control

lblName.Parent = this;

 Bổ sung Control vào Control Collection của Form

this.Controls.Add(txtName);

 Bổ sung một tập hợp các Control vào Control Collection của Form

this.Controls.AddRange(new Control[] {lblPassword, txtPassword, btnLogin});

 Container control có thuộc tính Controls chứa tập hợp các đối tượng Control.

 Nếu không kết nối Control với Parent Container Control thì Control đó vẫn được tạo ra nhưng không được hiển thị.

2. Thay đổi thuộc tính của Control

2 cách thay đổi thuộc tính của Control

 Sử dụng cửa sổ Properties:

 Chọn Control cần thay đổi thuộc tính.

 Trên cửa sổ Properties, chọn thuộc tính cần thay đổi và gán lại giá trị thích hợp.

 Sử dụng mã lệnh:

 Sử dụng cú pháp ControlObject.PropertyName để truy nhập vào thuộc tính của đối tượng control.

 ControlObject là một thể hiện của Control

 PropertyName là một thuộc tính của control.

Một số thuộc tính của Control

3. Bắt các sự kiện của Control

 Sự kiện của control

 Kế thừa các sự kiện của lớp System.Windows.Forms.Control

 các sự kiện riêng của Control

 Control có m ột s ự ki ện m ặc đ ịnh.

 S ự ki ện Click v ới Button

 S ự ki ện Load c ủa Form

 S ự ki ện CheckedChanged c ủa CheckBox

 ...

4. Các hộp thoại

 Thư viện Windows Forms cung cấp các lớp Dialog Box sau:

 ColorDialog: hiển thị các màu và trả về màu được chọn

 FontDialog: hiển thị các font và trả về font, kích thước, ... được chọn

 OpenFileDialog: cho phép người sử dụng duyệt file và thư mục, sau đó chọn một hoặc nhiều file.

 PageSetupDialog: cho phép người sử dụng lựa chọn các thiết lập liên quan tới cách bố trí trang.

 PrintDialog: cho phép người sử dụng lựa chọn các vấn đề liên quan đến in và gửi tài liệu tới máy in đã chọn.

 PrintPreviewDialog: cho phép người sử dụng xem file trước khi in.

 SaveFileDialog: cho phép người sử dụng duyệt file và thư mục, sau đó chọn file cần lưu.

Common Dialog Box ...

 Hộp thoại được chia thành 2 loại:

 Modal - ShowDialog()

 Modeless - Show()

5. Một số Window Form Control

5.1. Label và LinkLabel

 Label được sử dụng để hiển thị những thông tin read-only (VD: text và image).

 Một số thuộc tính của Label:

 Image: xác định ảnh để hiển thị trên label.

 Font: xác định font chữ hiển thị trên label

 Text: xâu ký tự hiển thị trên label

 TextAlign: căn lề.

 LinkedLabel thừa kế từ Label và bổ sung thêm các chức năng liên quan tới hyperlink.

 ActiveLinkColor: xác định màu để hiển thị điểm link.

 DisabledLinkColor: xác định màu của điểm link đã được sử dụng.

 LinkArea: xác định vị trí đặt text

 LinkBehavior: xác định cách hiển thị của điểm link khi có chuột di qua.

 Links: trả về tập các đối tượng Link trong LinkLabel.

 Lớp Link chứa các thông tin về hyperlink.

 Thuộc tính LinkData của lớp Link cho phép ta gắn URL với hyperlink

 LinkLabel được coi như một phần của điểm link

5.2. TextBox và RichTextBox

 TextBox và RichTextBox đều thừa kế từ lớp TextBoxBase.

 TextBox cho phép người sử dụng nhập hoặc hiển thị dữ liệu.

 Một số thuộc tính của lớp TextBox:

 AcceptReturn: chỉ áp dụng khi TextBox hiển thị nhiều dòng. AcceptReturn gán bằng true cho phép xuống dòng khi nhấn phím Enter.

 CharacterCasing: xác định ký tự nhập vào có cần thay đổi không (Lower, Normal, Upper).

 MultiLine: xác định TextBox có hiển thị nhiều dòng không.

 PasswordChar: ký tự hiển thị khi TextBox làm nơi nhập mật khẩu.

 ReadOnly: không cho nhập vào TextBox.

 ScrollBars: hiển thị thanh trượt khi TextBox có nhiều dòng.

 Text: nội dung của TextBox

 WordWrap: xác định text có tự động xuống dòng hay không

 Sự kiện TextChanged xảy ra khi nội dung của thuộc tính Text thay đổi.

TextBox và RichTextBox ...

 RichTextBox tương tự như TextBox, nhưng nó có khả năng hiển thị nội dung phong phú hơn.

 Một số thuộc tính quan trọng của RichTextBox:

 DetectUrls: xác định liệu control có tự phát hiện và định dạng URLs.

 Rtf: xác định nội dung của RichTextBox bao gồm cả mã RTF.

 SelectionColor: xác định màu của đoạn text được chọn.

 SelectionFont: xác định font của đoạn text được chọn.

 SelectedRtf: xác định nội dung RTF được chọn.

 ZoomFactor: xác định mức zoom hiện tại

5.3. PictureBox

 Để hiển thị ảnh từ các file: metafile, icon, bitmap, JPEG, PNG và GIF.

 Một số các thành phần quan trọng của lớp PictureBox:

 Image: ảnh hi ển th ị trên PictureBox.

 SizeMode: cách hi ển th ị ảnh

 Ki ểu enum PictureBoxSize

 AutoSize, CenterImage, Normal, StretchImage.

5.4. GroupBox và Panel

 GroupBox là container control, có khả năng chứa các control khác.

 Được sử dụng để sắp xếp các control và nhóm các control tương tự nhau.

 Controls: xác đ ịnh t ập các control ch ứa trong GroupBox

 Text: xác đ ịnh n ội dung hi ển th ị trên GroupBox

 Panel là container control.

 AutoScroll: xác định thanh trượt có được hiển thị không

 Controls: xác định tập các control chứa trong Panel

5.5. Button, CheckBox, RadioButton

 Các lớp Button, CheckBox, RadioButton đều thừa kế từ lớp ButtonBase.

 Sử dụng Button để khởi tạo một hành động cụ thể khi người sử dụng click nó.

 CheckBox và RadioButton thường được sử dụng để lưu trạng thái (chọn hoặc không chọn).

 Thường được nhóm lại.

 CheckBox cho phép chọn 0/1/n lựa chọn từ một tập hợp

 RadioButton cho phép chọn 1 lựa chọn từ một tập hợp.

 Nếu muốn chọn nhiều RadioButton thì phải đặt chúng trên các container control khác nhau.

Một số thuộc tính của Button

 Image: xác định ảnh hiển thị trên Button

 Text: xác định văn bản hiển thị trên Button

 Sự kiện Click xảy ra khi người sử dụng click chuột.

Một số thuộc tính của CheckBox

 Checked: trả về true nếu chọn CheckBox; ngược lại trả về false

 CheckState: xác định trạng thái của Checkbox, giá trị thuộc kiểu enum CheckState (Checked, Unchecked, Indeterminate).

 Khi chọn Indeterminate thì Checked vẫn trả về true

 Nên sử dụng CheckState để xác định trạng thái của CheckBox.

 ThreeState

 Bằng true thì CheckBox có 3 trạng thái.

 Bằng false thì giá trị Indeterminate chỉ được gán thông qua mã lệnh, không phải do người sử dụng.

 Text: xác định văn bản hiển thị trên CheckBox.

 Sự kiện CheckedChanged xảy ra khi giá trị Checked bị thay đổi.

Một số thuộc tính của RadioButton

 Checked: trả về true hoặc false để xác định RadioButton có được chọn hay không.

 Text: xác định văn bản hiển thị trên CheckBox.

 Sự kiện CheckedChanged xảy ra khi giá trị Checked bị thay đổi.

5.6. ListBox, CheckedListBox và ComboBox

 ListBox cho phép ta lựa chọn một hoặc nhiều giá trị từ một danh sách các giá trị cho trước.

 ColumnWidth: xác định độ rộng của một cột trong ListBox có nhiều cột.

 ItemHeight: xác định chiều cao của một item trong ListBox.

 Items: tập hợp các đối tượng biểu diễn danh sách các item trong ListBox.

 MultiColumn: thuộc tính xác định liệu ListBox có được chia thành nhiều cột hay không.

 SelectedIndex: xác định index của item đang được chọn.

 SelectedIndices: xác định tập các index của tất cả các item được chọn.

 SelectedItem: xác định item được chọn

 SelectedItems: xác định tập hợp các item được chọn

 SelectionMode: xác định số lượng cac item được chọn. Giá trị của nó là kiểu enum SelectionMode.

 Sorted: xác định ListBox có được sắp xếp theo thứ tự.

 Sự kiện SelectedIndexChanged xảy ra khi index bị thay đổi.

 FindString(): phương thức xác định item đầu tiên trong ListBox có nội dung bắt đầu với một string cho trước.

 FindStringExact(): phương thức xác định item đầu tiên trong ListBox có nội dung giống hệt nội dung của một string cho trước.

CheckedListBox

 CheckListBox thừa kế từ ListBox

 Hiển thị một tập các item, mỗi item tương ứng với một CheckBox.

 Một số thành phần chính của CheckListBox:

 CheckedIndices: xác định tập các index của tất cả các item được chọn.

 CheckedItems xác định tập hợp các item được chọn

 SelectionMode: xác định số lượng cac item được chọn. Giá trị của nó là kiểu enum SelectionMode:

 Sorted: xác định ListBox có được sắp xếp theo thứ tự.

 Sự kiện ItemCheck xảy ra khi thay đổi thuộc tính checked của một item

ComboBox

 ComboBox tương tự như ListBox, ngoại trừ việc có thể nhập vào text và chỉ được chọn một item.

 Một số thành phần của ComboBox:

 DrawMode: xác định cách vẽ các item của ComboBox. Giá trị của nó là kiểu enum DrawMode.

 DropDownStyle: biểu diễn kiểu của ComboBox. Giá trị của nó được xác định bởi enum DropDownStyle.

 DropDownWidth: xác định chiều rộng của phần drop-down trên ComboBox.

 Items: xác định tập các item trong ComboBox.

 MaxDropDownItems: xác định số item lớn nhất có thể có trên drop-down; nếu số lượng item lớn hơn thì sẽ xuất hiện thanh cuốn.

 MaxLength: xác định chiều dài xâu lớn nhất được nhập vào ComboBox.

 SelectedIndex: xác định index của item hiện thời được chọn.

 Trả về -1 nếu không có item nào được chọn.

 SelectedItem: xác định item hiện thời được chọn

 SelectedText: xác định string trên phần edit.

 Sorted: xác định các item có được sắp xếp hay không.

 Sự kiện SelectedIndexChanged xảy ra khi thuộc tính SelectedIndex thay đổi.

5.7. DomainUpDown và NumericUpDown

 Thừa kế từ lớp System.Windows.Forms.UpDownBase.

 Sử dụng bằng cách:

 Lựa chọn các giá trị từ một tập hợp các giá trị đã được sắp xếp bằng cách nhấn các nút up/down.

 Nhập giá trị vào control nếu thuộc tính ReadOnly của nó được gán bằng false.

 DomainUpDown cho phép lựa chọn từ một tập các đối tượng.

 Khi một item được chọn, đối tượng sẽ được convert thành String và hiển thị.

 NumericUpDown chứa tập hợp giá trị số.

DomainUpDown

 Items: biểu diễn tập đối tượng được gán cho control.

 ReadOnly: xác định có thể nhập giá trị hay không

 SelectedIndex: xác định giá trị index của item được chọn

 SelectedItem: xác định giá trị của các item được chọn

 Sorted: xác định tập hợp các item có được sắp xếp hay không.

 Wrap: xác định thuộc tính SelectedIndex có được điều chỉnh lại tới item đầu tiên hoặc cuối cùng nếu người sử dụng tiếp tục di chuyển đến cuối danh sách.

 Sự kiện SelectedItemChanged: xảy ra khi thuộc tính SelectedIndex bị thay đổi.

NumericUpDown

 Increment: xác định bước tăng hoặc giảm.

 Maximum: xác định giá trị lớn nhất được phép

 Minimum: xác định giá trị nhỏ nhất được phép

 ReadOnly: xác định có thể nhập lại giá trị

 ThousandsSeparator: xác định dấu phân biệt hàng nghìn

 Value: xác định giá trị được gán cho control

 Sự kiện ValueChanged xảy ra khi thuộc tính Value bị thay đổi.

5.8. MonthCalendar

 MonthCalendar cung cấp giao diện rất thân thiện để người sử dụng lựa chọn thời gian.

 CalendarDimensions: xác định số cột hoặc dòng của tháng để hiển thị.

 FirstDayOfWeek: biểu diễn ngày đầu tiên trong tuần.

 MaxDate: ngày lớn nhất có thể hiển thị.

 MaxSelectionCount: xác định số lượng ngày lớn nhất được chọn.

 MinDate: ngày nhỏ nhất có thể hiển thị.

 SelectionEnd: xác định ngày cuối cùng trong những ngày đã chọn.

 SelectionRange: xác định các ngày đã chọn.

 SelectionStart: xác định ngày đầu tiên trong những ngày đã chọn.

 ShowToday: hiển thị hay không ngày hiện thời ở phía dưới control

 ShowWeekNumbers: hiển thị hay không thứ tự của tuần (1-52)

 TodayDate: cho biết ngày hiện tại

 Sự kiện DateChanged xảy ra khi chọn lại ngày trên control.

 Sự kiện DateSelected xảy ra khi chọn date trên form.

DateTimePicker

 Cho phép người sử dụng lựa chọn ngày thàng và thời gian theo những định dạng khác nhau.

 CustomFormat: biểu diễn xâu định dạng date/time. Chỉ có tác dụng khi Format = Custom

 Format: xác định định dạng date/time dựa trên các giá trị của kiểu enum DateTimePickerFormat.

 MaxDate là date/time lớn nhất được lựa chọn

 MinDate là date/time nhỏ nhất được lựa chọn

 ShowCheckBox: CheckBox có được hiển thị ở phía bên trái ngày được chọn.

 ShowUpDown: UpDown có được hiển thị

 Value: biểu diễn giá trị date/time được chọn

 Sự kiện ValueChanged xảy ra khi thuộc tính Value bị thay đổi.

 Sự kiện FormatChanged xảy ra khi thuộc tính Format thay đổi

5.9. TreeView

 TreeView được sử dụng để hiển thị tập hợp các nút phân cấp.

 Mỗi nút là một đối tượng TreeNode.

 Sự kiện AfterCheck xảy ra khi TreeNode bị check

 Sự kiện AfterCollapse xảy ra khi TreeNode bị co lại

 Sự kiện AfterExpand xảy ra khi TreeNode được mở ra

 Sự kiện AfterSelect xảy ra khi TreeNode bị select

 CheckBoxes: xác định check box có được hiển thị bên cạnh TreeNode

 ImageList: chứa các icon của TreeNode

 Nodes: xác định tập hợp các TreeNode

 Scrollable: thanh trượt có được hiển thị hay không

 SelectedNode: biểu diễn TreeNode được select

 Sorted: TreeNode có được sắp xếp hay không

ListView

 ListView được sử dụng để hiển thị danh sách các item.

 Mỗi item trong danh sách có tên và có icon tương ứng với nó.

 Activation: xác định cách active một item, kiểu giá trị là kiểu enum ItemActivation.

 CheckBoxes: xác định Check Box có được hiển thị bên cạnh item

 CheckedIndices: xác định tập hợp các index của các item được check.

 CheckedItems xác định tập hợp các item được check.

 Items: xác định tập các item của ListView

 LargeImageList biểu diễn ImageList được sử dụng để hiển thị icon lớn.

 MultiSelect: cho phép chọn nhiều item.

 Scrollable: thanh trượt xuất hiện khi kích thước của item vựơt quá kich thước của client area.

 SelectedIndices: xác định tập các index của các item được select.

 SelectedItems: xác định tập các item được select.

 SmallImageList: biểu diễn ImageList được sử dụng để hiển thị icon nhỏ

 Sorting: sắp xếp các item theo thứ tự của enum SortOrder.

 View: cách hiển thị các item, sử dụng các giá trị của kiểu enum View

 Sự kiện ItemActivate xảy ra khi item được activate.

 Sự kiện ItemCheck xảy ra khi trạng thái check của item bị thay đổi.

 Sự kiện SelectedIndexChanged xảy ra khi thay đổi index.

5.10. Timer

 Timer được sử dụng khi một sự kiện được tạo ra trong một khoảng thời gian cho trước.

 Lớp System.Timers.Timer kích hoạt sự kiện Tick từ một thread khác.

 Enabled: xác định Timer có hoạt động không.

 Interval: khoảng thời gian kích hoạt sự kiện (tính bằng ms).

 Phương thức Start() khởi tạo Timer

 Phương thức Stop() khoá Timer

 Sự kiện Tick xảy ra khi đến khoảng thời gian Interval.

TrackBar

 TrackBar cung cấp một cách trực quan để lựa chọn giá trị từ một chuỗi cho trước thông qua hộp cuộn và giá trị tỷ lệ.

 LargeChange: xác định giá trị lớn nhất khi di chuyển hộp cuộn.

 Maximum: xác định phạm vi lớn nhất của TrackBar

 Minimum: xác định phạm vi nhỏ nhất của TrackBar

 Orientation: biểu diễn hướng ngang và dọc của TrackBar.

 SmallChange: xác định giá trị nhỏ nhất khi di chuyển hộp cuộn.

 TickFrequency: biểu diễn tần suất vẽ đường di chuyển.

 TickStyle xác định cách hiển thị của đường dịch chuyển, giá trị kiểu enum TickStyle.

 Value: biểu diễn vị trí hiện thời của hộp cuộn.

 ValueChanged: xảy ra khi thuộc tính Value thay đổi thông qua sự kiện Scroll hoặc lập trình.

 Sự kiện Scroll xảy ra khi hộp cuộn bị di chuyển bởi chuột hoặc bàn phím.

ProgressBar

 Được sử dụng để chỉ ra trạng thái về thời gian của một thao tác như: cài đặt, copy file ..

 Maximum: xác đ ịnh biên trên c ủa ti ến trình

 Minimum: xác đ ịnh biên dư ới c ủa ti ến trình

 Value: bi ểu di ễn giá tr ị hi ện t ại c ủa ProgressBar

5.11. HscrollBar và VscrollBar

 HScrollBar và VScrollBar hiển thị thanh trượt ngang và dọc.

 Lớp HScrollBar và VScrollBar thừa kế từ lớp ScrollBar.

 LargeChange: chỉ ra số lượng để khi Value thay đổi thì xuất hiện thanh trượt.

 Maximum: xác định phạm vi trên của thanh trượt.

 Minimum:xác định phạm vi trên của thanh trượt.

 SmallChange: chỉ ra số lượng để khi Value thay đổi thì bỏ thanh trượt.

 Value: biểu diễn vị trí hiện thời của thanh trượt.

 Sự kiện ValueChanged xảy ra khi thuộc tính Value thay đổi thông qua lập trình hoặc thông qua sự kiện Scroll.

 Sự kiện Scroll xảy ra khi trượt thanh.

5.12. TabControl

 TabControl hiển thị một tập hợp các trang.

 Mỗi trang có chứa các control của chính nó.

 TabControl được sử dụng để sắp xếp một số lượng lớn các control vì chúng sẽ chiếm ít không gian hơn.

 Alignment: là vùng mà các tab được căn lề.

 ImageList: là ImageList control được sử dụng để hiển thị ảnh trên tab.

 MultiLine: xác định liệu tab có được hiển thị trên nhiều dòng.

 SelectedIndex: biểu diễn index của trang tab được chọn.

 Sự kiện SelectedIndexChanged xảy ra khi thuộc tính SelectedIndex bị thay đổi giá trị.

 SelectedTab: biểu diễn trang tab được chọn.

 TabCount: cho biết số lượng tranng tab

 TabPages: xác định tập hợp các trang tab.

6. Tạo ra Menu

 Các lớp có liên quan tới menu: MainMenu, MenuItem và ContextMenu đều thừa kế từ lớp Menu.

 MainMenu và ContextMenu đều có thuộc tính MenuItems.

 MenuItems là m ột t ập h ợp các đ ối tư ợng MenuItem

 M ỗi đ ối tư ợng bi ểu di ễn m ột item c ủa menu.

Một số thành phần chính của MenuItem

 Checked: xác định mỗi item có checkmark hoặc radiobutton ở bên cạnh hay không.

 Enabled: xác định menu item có được phép sử dụng hay không.

 MenuItems: xác định tập các đối tượng MenuItem có quan hệ với menu và được sử dụng để tạo ra cấp trúc menu phân cấp.

 Parent: cho biết menu cha của một menu item.

 RadioCheck: xác định menu item có radio button ở bên cạnh không.

 Shortcut: xác định phím tắt của menu item.

 Text: xác định text hiển thị trên menu item.

 Sự kiện Click xảy ra khi người sử dụng select menu item.

 Sự kiện Popup xảy ra trước khi submenu xuất hiện. Sự kiện này thường được sử dụng để add, remove, enable, disable,check, uncheck menu item trước khi hiển thị nó.

 Sự kiện Select xảy ra khi người sử dụng select menu item.

 Phương thức PerformClick tạo ra sự kiện Click cho menu item tương tự như người sử dụng click nó.

6.1. MainMenu

 MainMenu là container control.

 Mỗi Window Form chỉ có một đối tượng MainMenu, được xác định thông qua thuộc tính Menu của đối tượng Form.

 Thành phần quan trọng nhất của MainMenu là MenuItems

6.2. ContextMenu

 ContextMenu chỉ có một menu item ở mức đỉnh.

 Một ContextMenu thường được gắn với một Control hoặc một Form thông qua thuộc tính ContextMenu.

6.3. StatusBar

 StatusBar được sử dụng để hiển thị thông tin và thường được đặt ở phía dưới của Form.

 Khi bổ sung StatusBar lên Form ta phải gán z-order của nó để StatusBar không chồng lên các control khác, bằng cách click chuột phải trên StatusBar và chọn Send to Back.

 Panels là một tập hợp các đối tượng StatusBarPanel. Panels chia StatusBar thành nhiều vùng

 Alignment: xác định cách căn lề của text và icon trên panel.

 AutoSize: xác định cách panel tự điều chỉnh kích thước. Gồm 3 giá trị: None, Contents và Spring.

 BorderStyle: xác định kiểu biên. Gồm 3 giá trị: None, Raised, và Sunken.

 Icon: icon hiển thị trên StatusBar.

 ToolTipText: xác định ToolTip hiển thị trên StatusBar.

6.4. ToolBar

 ToolBar được sử dụng để tạo ra thanh công cụ trong Window và thường được gán ở phía dưới MainMenu. (chú ý gán lại z-order)

 Buttons: xác định một tập các đối tượng ToolBarButton.

 ImageList: xác định đối tượng ImageList lưu trữ trên icon.

 ShowToolTips: xác định liệu toolbar có hiển thị ToolTips hay không.

 Có thể viện dẫn menu item bằng cách gọi phương thức PerformClick() trên đối tượng MenuItem.

 Cần phải biết menu nào viện dẫn ToolBarButton.

 ToolBarButton cung cấp thuộc tính Tag - để lưu bất kỳ đối tượng nào cần được gán với ToolBarButton.

 Sự kiện ButtonClick xảy ra khi toolbar button bị click.

7. Xây dựng ứng dụng MDI

 Ứng dụng MDI có một Form cha và các Form con.

 Không thể di chuyển Form con ra ngoài Form cha.

 Có thể mở nhiều Form con cùng một lúc.

 Các Form con đóng, mở, max, min không phụ thuộc vào nhau. Nhưng nếu Form cha đóng thì tất cả các Form con đều đóng.

 Form cha thường có menu chính.

 Để tạo ra MDI form, vẫn tạo ra Form như thông thường và đổi thuộc tính IsMdiContainer thành true.

 Để tạo ra Form con, vẫn tạo ra Form như thông thường và gán MdiParent là form MDI đã tạo ra.

Một số thành phần của lớp Form có liên quan đến MDI Form:

 ActiveMdiChild: xác định MDI child đang được active

 IsMdiContainer: xác định Form có phải là MDI Container hay không.

 MdiChildren: xác định mảng các MDI child Form của một Form

 MdiParent: xác định MDI parent form của Form hiện thời

 Phương thức LayoutMdi() sắp xếp các MDI child Form trong MDI parent Form

 Sự kiện MdiChildActivate xảy ra khi MDI child Form được active hoặc đóng ứng dụng MDI.

Bạn đang đọc truyện trên: AzTruyen.Top

Tags: #chương