Xem mẫu

  1. Bài 4: Các đối tượng trên Windows Form Giới thiệu Thư viện Microsoft .NET framework chứa một tập phong phú các lớp dùng để tạo các ứng dụng Windows trong không gian tên System.Windows.Forms. Các lớp điều khiển cơ bản như các lớp Label, TextBox, Button, CheckBox, ListBox… đến các điều khiển chuyên biệt như MenuStrip, StatusStrip, ToolStrip... Người đọc sẽ tìm thấy tất cả các công cụ cần thiết để quản lý các ứng dụng giao diện đa tài liệu MDI (Multiple Document Interface), tích hợp việc trợ giúp ngữ cảnh, và ngay cả tạo các giao diện người dùng đa ngôn ngữ, kiểm tra dữ liệu hợp lệ… Mục tiêu của bài: Nhằm trang bị cho người học: - Kiến thức và kỹ năng về việc sử dụng các đối tượng trên Form. - Kiến thức và kỹ năng về việc lựa chọn các sự kiện sử dụng cho phù hợp. I/ Các điều khiển cơ bản 1/ Nhãn (Label) Các điều khiển Label đặt chuỗi tĩnh trên Form, thường sử dụng để cung cấp chuỗi mô tả cho các điều khiển khác. Chuỗi đặt trong thuộc tính Text, và được canh lề bởi thuộc tính TextAlign. Thuộc tính Mô tả string Text Truy cập hay thiết lập văn bản hiển thị trên Label label1.Text = "Hello"; bool AutoSize Truy cập hay thiết lập giá trị nếu là true chỉ rõ điều khiển tự động thay đổi kích thước theo chiều dài của văn bản trên Label ContentAlignment Truy cập hay thiết lập giá trị chỉ rõ canh lề văn bản trên Label TextAlign bool AutoEllipsis Truy cập hay thiết lập giá trị nếu là true, chuỗi văn bản không vừa khít với Label, sẽ hiển thị dấu … cuối của chuỗi. Thuộc tính này không có tác dụng nếu thuộc tính AutoSize là true BorderStyle BorderStyle Truy cập hay thiết lập kiểu viền của điều khiển, là các hằng của enumeration BorderStyle gồm Fixed3D, FixedSingle và None label1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; 47
  2. bool UseMnemonic Truy cập hay thiết lập giá trị nếu là true, ký tự đi sau dấu & trong thuộc tính Text là phím truy cập, nghĩa là bạn có thể sử dụng Alt + ký tự để chuyển focus đến Label Bảng 4.1 Các thuộc tính của Nhãn 2/Nhãn liên kết (LinkLabel) LinkLabel là một nhãn đặc biệt kế thừa từ lớp Label, và bổ sung một số thuộc tính của nhãn biểu diễn dạng liên kết. Ví dụ, nhiều ứng dụng cung cấp một liên kết đến website công ty trong cửa sổ About. Bạn cần xử lý sự kiện LinkClicked để tạo chức năng liên kết cho nhãn liên kết. Trong phương thức xử lý sự kiện này, thiết lập thuộc tính LinkVisited là true để màu của liên kết được cập nhật thích hợp. Sử dụng phương thức System.Diagnostics.Process.Start("URL") để hiển thị trang web với địa chỉ URL trong trình duyệt. Ví dụ: linkLabel1.Text = "See http://www.google.com/"; linkLabel1.LinkArea = new LinkArea(4, 26); linkLabel1.LinkBehavior = LinkBehavior.HoverUnderline; private void linkLabel1_LinkClicked(Object sender, LinkLabelLinkClickedEventArgs e) { linkLabel1.LinkVisited = true; System.Diagnostics.Process.Start("http://www.google.com/"); } 3/ Nút lệnh (Button) Nút lệnh thực hiện một thao tác nào đó. Thành viên Mô tả void PerformClick() Phát sinh sự kiện click button FlatStyle FlatStyle Truy cập hay thiết lập giá trị chỉ kiểu button, là các hằng của enumeration System.Windows.Forms.FlatStyle như là Flat, Popup, Standard, System btnHienThi.FlatStyle = System.Windows.Forms.FlatStyle.Popup; FlatButtonAppearance Truy cập hay thiết lập màu viền, kích thước nét viền, màu nền khi di FlatAppearance chuyển mouse hay nhấn mouse trên nút lệnh FlatStyle FlatStyle button1.FlatAppearance.BorderColor = Color.LightSteelBlue; button1.FlatAppearance.MouseOverBackColor=Color.LightCyan; Thiết lập thuộc tính FlatStyle là FlatStyle.Flat để các thiết lập thuộc tính FlatAppearance có tác dụng: button1.FlatStyle=FlatStyle.Flat; Bảng 4.2 Các thành viên của lớp Button 48
  3. 4/ Hộp văn bản (TextBox) TextBox cho phép người dùng nhập vào thông tin văn bản. TextBox cung cấp một tập các tính năng định nghĩa sẵn mà người dùng có thể truy cập thông qua menu ngữ cảnh. Hình 4.1 TextBox với menu ngữ cảnh Nhiều tính năng thuộc lớp TextBox và một số tính năng thuộc lớp cơ sở TextBoxBase được kế thừa bởi lớp MaskedTextBox và RichTextBox Thành viên Mô tả string Text Truy cập hay thiết lập văn bản hiển thị trên TextBox bool ReadOnly Truy cập hay thiết lập giá trị nếu là true, văn bản trong TextBox là chỉ đọc bool ScrollBars Truy cập hay thiết lập giá trị nếu là true, sẽ hiển thị thanh cuộn trong hộp nhập nhiều dòng bool Multiline Multiline truy cập hay thiết lập giá trị, nếu là true, cho phép bool AcceptsReturn nhập văn bản nhiều dòng vào TextBox bool WordWrap AcceptsReturn nếu là true, khi đó dòng mới có thể chèn vào TextBox khi người dùng ấn phím Enter Khi bổ sung chuỗi nhiều dòng vào TextBox, ngăn cách các dòng bởi ký tự \r\n, ví dụ “Line1\r\nLine2” WordWrap nếu là true, sẽ cho phép cuộn dòng bool CanUndo Truy cập hay thiết lập văn bản trong TextBox có thể phục hồi (undo) hay không void Cut(), Copy(), Paste(string text) Các phương thức này cho phép chọn khối văn bản, hủy chọn void Clear(), Undo() và sao chép, cắt văn bản vào bộ nhớ, và dán văn bản từ bộ nhớ ra TextBox, phục hồi. void Select(int start, int length) void SelectAll(), DeselectAll() 49
  4. CharacterCasing CharacterCasing Truy cập hay thiết lập giá trị Lower, Normal, Upper thuộc enumeration CharacterCasing để chuyển văn bản trong TextBox thành chữ thường hay hoa string[] Lines Truy cập hay thiết lập mảng các dòng trong TextBox int MaxLength Truy cập hay thiết lập số tối đa ký tự có thể vào TextBox. Giá trị mặc định là 0 nghĩa là không giới hạn char PasswordChar PasswordChar truy cập hay thiết lập ký tự xuất hiện trong bool UseSystemPasswordChar TextBox, thay thế cho các văn bản trong TextBox để che dấu thông tin. textBox1.PasswordChar = „*‟; UseSystemPasswordChar truy cập hay thiết lập giá trị nếu là true sẽ sử dụng ký tự mật khẩu định nghĩa bởi hệ thống string SelectedText SelectionStart và SelectionLength truy cập hay thiết lập vị trí int SelectionLength bắt đầu và kết thúc của văn bản được chọn hiện hành trong TextBox int SelectionStart SelectedText truy cập hay thiết lập văn bản được chọn hiện hành trong TextBox Bảng 4.3 Các thành viên của lớp TextBox 5/ Hộp đánh dấu (CheckBox) và nút lựa chọn (RadioButton) CheckBox và RadioButton cung cấp thuộc tính Checked truy cập hay thiết lập giá trị kiểu bool chỉ rõ điều khiển đang được chọn hay không. Sau khi trạng thái thay đổi, sự kiện CheckedChanged phát sinh. Bạn có thể tạo một CheckBox ba trạng thái đặc biệt bằng cách thiết lập thuộc tính ThreeState là true. Thuộc tính CheckState truy cập hay thiết lập giá trị chỉ rõ điều khiển đang được chọn, không chọn hay trạng thái trung gian (tô bóng nhưng không chọn), bởi các giá trị thuộc enumeration CheckState là Checked, Unchecked, Indeterminate. Thuộc tính AutoCheck mặc định là true, sẽ thay đổi trạng thái của điều khiển khi người dùng kích vào điều khiển, nếu là false, sẽ ngăn cản người dùng thay đổi trạng thái điều khiển. Nếu nhóm các RadioButton thành một nhóm bởi điều khiển GroupBox, rồi thì chỉ có một RadioButton được chọn trong nhóm. Ví dụ: using System; using System.Windows.Forms; public partial class Form1 : Form { private void Form1_Load(object sender, EventArgs e) { rbred.Checked = true; } 50
  5. private void rbred_CheckedChanged(object sender, EventArgs e) { this.BackColor = Color.Pink; } private void rbgreen_CheckedChanged(object sender, EventArgs e) { this.BackColor = Color.LightGreen; } private void rbblue_CheckedChanged(object sender, EventArgs e) { this.BackColor = Color.LightBlue; } } Hình 4.2: RadioButton II/ Các điều khiển nâng cao ListBox, ComboBox .NET cung cấp ba điều khiển danh sách: ListBox, CheckedListBox và ComboBox. Chúng thừa kế từ lớp trừu tượng ListControl, định nghĩa các tính năng cơ sở cho phép sử dụng điều khiển danh sách để ràng buộc dữ liệu. Các điều khiển danh sách có thể ràng buộc danh sách dữ liệu như DataSet, DataTable, mảng, ArrayList… bởi thuộc tính DataSource string[] thanhPho = {"Đà nẵng","Huế","Sài gòn","Nha trang","Hà nội","Đà lạt"}; listBox1.DataSource = thanhPho; checkedListBox1.DataSource = thanhPho; Có thể truy cập hay thiết lập mục chọn hiện hành sử dụng thuộc tính SelectedIndex để xác định chỉ số của mục chọn hiện hành, hay sử dụng thuộc tính Text, SelectedValue, SelectedItem để xác định mục chọn label1.Text = checkedListBox1.SelectedValue.ToString(); label1.Text = checkedListBox1.Text; label1.Text = checkedListBox1.SelectedItem.ToString(); listBox1.SelectedIndex = 0; Có thể chọn nhiều mục từ điều khiển danh sách, sử dụng tập SelectedIndices hay SelectedItems trả về một tập các mục chọn. Thuộc tính SelectionMode chỉ rõ 51
  6. hộp danh sách có thể chọn nhiều mục hay không, xác định bởi các giá trị thuộc enumeration SelectionMode: - MultiExtended: chọn nhiều mục bằng cách nhấn giữ Ctrl hay Shift khi kích chọn mục để chọn nhiều mục - MultiSimple: chọn một mục bằng cách kích mouse chọn hay nhấn phím trống CheckedListBox không hỗ trợ Ctrl, Shift, nhưng cho phép nhiều mục được chọn. Thuộc tính CheckedIndices và CheckedItems cung cấp thông tin về các mục chọn private void button1_Click(object sender, EventArgs e) { label1.Text = ""; foreach (string item in checkedListBox1.CheckedItems) label1.Text = label1.Text + item + " "; } Có thể truy cập tất cả các mục trong điều khiển danh sách bởi thuộc tính Items. Tập Items cho phép thêm vào và xóa mục trong danh sách checkedListBox1.CheckOnClick = true; checkedListBox1.Items.Add("Đà nẵng"); checkedListBox1.Items.Remove("Đà nẵng"); checkedListBox1.Items.RemoveAt(0); ComboBox hỗ trợ một số thuộc tính mục chọn như trên và tập Items. Kiểu ComboBox chỉ rõ bởi thuộc tính DropDownStyle: - ComBoxStyle.DropDown: danh sách không giới hạn, người dùng có thể vào thông tin tùy ý - ComboBoxStyle.DropDownList: chỉ cho phép chọn mục có sẵn trong danh sách. III/ Image,ImageList 1/PictureBox PictureBox là điều khiển để hiển thị hình ảnh. Các thuộc tính thường dùng của PictureBox như sau: - Thuộc tính Image xác định hình ảnh cần hiển thị - Thuộc tính SizeMode thiết lập giá trị chọn từ enumeration PictureBoxSizeMode: 52
  7. - AutoSize: PictureBox thay đổi kích thước bằng image - CenterImage: image hiển thị ở giữa của PictureBox, và nếu image lớn hơn PictureBox sẽ bị cắt phần xung quanh image - Normal: image đặt ở góc trái trên của PictureBox, nếu image sẽ bị cắt nếu kích thước lớn hơn PictureBox - StretchImage: image phóng to hay thu nhỏ vừa với kích thước của PictureBox - Zoom: kích thước của image tăng hay giảm theo PictureBox và đảm bảo tỷ lệ chiều cao và rộng của image Ví dụ: pictureBox1.Image = System.Drawing.Image.FromFile("pic.bmp"); pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; 2/ ImageList Công dụng: Quản lý các hình ảnh được chứa trong các điều khiển khác như: ListView, TreeView, ToolStrip,… Tạo ImageList: Chọn công cụ và kéo thả vào form. Các thuộc tính thường dùng: Thuộc tính Ý nghĩa Image Các hình được quản lý bởi ImageList - Khi chọn sẽ xuất hiện công cụ Images Collection Editor, cho phép thêm, xoá, sắp xếp các ảnh. 53
  8. IV/ListView, TreeView 1/ ListView - Dùng để hiển thị dữ liệu theo các dòng và các cột + Có thể chọn một hoặc nhiều dòng + Có thể hiển thị các biểu tượng theo các dòng - Thuộc tính: Thuộc tính Ý nghĩa CheckBoxes Có/Không xuất hiện các checkbox trên các dòng dữ liệu. Mặc định là False Columns Các cột hiển thị trong chế độ Details FullRowSelect Chọn được nhiều phân tử trong ListView GridLines Hiển thị lưới (Chỉ hiển thị trong chế độ Details) Items Mảng các dòng trong ListView LargeImageList Danh sách ảnh dạng lơn hiển thị trên ListView SmailImageList Danh sách ảnh dạng nhỏ hiển thị trên ListView MultiSelect Có/Không cho phép chọn nhiều dòng. Mặc định là True SelectedItems Mảng các dòng được chọn View Kiểu hiển thị của ListView Icons:Hiển thị danh sách theo các biểu tượng 54
  9. List: Hiển thị danh sách theo một cột Details: Hiển thị ListView theo danh sách nhiều cột Phương thức: Phương thức Công dụng Add Thêm một dòng vào ListView Clear Xóa tất cả các dòng của ListView Remove Xóa một dòng trong ListView RemoveAt(index) Xóa một dòng ở vị trí index Sự kiện thường dùng: ItemSelectionChanged: Xảy ra khi chọn một dòng. Ví dụ: Thiết kế form nhập, sửa, xóa dữ liệu như hình minh họa. Cách thực hiện: Thiết kế Form và đặt tên các đối tượng - txtId, txtFirstName,txtLastName,txtAddress. - btnNew, btnEdit,btnDelete,btnSave,btnCancel. 55
  10. Đặt thuộc tính cho ListView1 Columns: Thêm 4 cột FullRowSelect: True GridLine: True MulitiSelect: False View: Details Xử lý sự kiện các button private void btnNew_Click(object sender, EventArgs e) { txtId.Clear(); txtFirstName.Clear(); txtLastName.Clear(); txtAddress.Clear(); } private void btnEdit_Click(object sender, EventArgs e) { txtId.Focus(); } private void btnCancel_Click(object sender, EventArgs e) { txtId.Clear(); txtFirstName.Clear(); txtLastName.Clear(); txtAddress.Clear(); } private void btnDelete_Click(object sender, EventArgs e) { try { listView1.Items.RemoveAt(listView1.SelectedIndex); } catch(Exception) {} } public void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) { txtId.Text=listView1.Items[e.ItemIndex].SubItems[0].Text; txtFirstName.Text=listView1.Items[e.ItemIndex].SubItems[1].Text; txtLastName.Text=listView1.Items[e.ItemIndex].SubItems[2].Text; txtAddress.Text=listView1.Items[e.ItemIndex].SubItems[3].Text; } private void btnClose_Click(object sender, EventArgs e) { this.Close(); } 56
  11. 2/ TreeView - Hiển thị thông tin theo các nút(node) - Các nút cha có các nút con - Nút đầu tiên gọi là nút gốc +Ấn dấu [+] để mở nút + Ấn dấu [-] để thu gọn nút - Mỗi nút có hình ảnh kèm theo - Thuộc tính: Thuộc tính Ý nghĩa CheckBoxes Có/Không xuất hiện các checkbox treen các node. Mặc định là False Checked Có/Không một Node được check( Thuộc tính CheckBoxes phải được đặt là True) ImageList Chỉ ra danh sách ảnh hiển thị trên các node Nodes Mảng các TreeNodes trong TreeView Nodes.Add: Bổ sung một node vào cây Nodes.Clear: Xóa toàn bộ các node trên cây Nodes.Remove: Xóa một node trên cây và các node con của nó SelectedNode Node hiện thời được chọn FullPath Chỉ ra đường dẫn đến node bắt đầu từ node gốc SelectedImageIndex Chỉ ra chỉ số ảnh được hiển thị trên node khi node được chọn Text Text hiển thị của Node ImageIndex Chỉ ra chỉ số ảnh được hiển thị trên node khi node không được chọn FirstNode Node con đầu tiên của node LastNode Node con cuối cùng của node 57
  12. PrevNode Node con trước của node con hiện thời NextNode Node con tiếp theo node hiện thời Phương thức: Phương thức Công dụng Collapse Thu nhỏ các node con của node Expand Mở rộng các node con của node ExpandAll Mở rộng tất cả các node con GetNodeCount Trả về số lượng node con Sự kiện:  AfterSelect: Xảy ra khi một node được chọn.  BeforeExpand: Xảy ra khi mở rộng một node. Ví dụ 3.3: private void AddTreeView_Load(object sender, EventArgs e) { treeView1.ImageList=imageList1; comboBox1.Items.Add(“Image1”); comboBox1.Items.Add(“Image2”); comboBox1.SelectedIndex=0; } private void btnAddRoot_Click(object sender, EventArgs e) { if(txtInput.Text.Trim()==””) return ; TreeNode childNode=new TreeNode(); childNode.Text=txtInput.Text; childNode.ImageIndex=comboBox1.SelectedIndex; 58
  13. treeView1.Nodes.Add(childNode); } private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { currentNode=e.Node; } private void btnAddchild_Click(object sender, EventArgs e) { if(txtInput.Text.Trim()==””) return; TreeNode childNode=new TreeNode(); childNode.Text=txtInput.Text; childNode.ImageIndex=comboBox1.SelectedIndex; currentNode.Nodes.Add(childNode); currentNode.ExpandAll(); } private void btnAddDelete_Click(object sender, EventArgs e) { currentNode.Remove(); } V/ Bố cục Control Cách bố trí (Layout) là một vấn đề quan trọng và không thể thiếu trong việc thiết kế giao diện. GUI hỗ trợ nhiều kiểu layout tương ứng với mỗi control được gọi là layout container/layout control. Các layout container này được kế thừa từ lớp System.Windows.Controls.Panel và có cách sắp xếp và bố trí các control bên trong nó khác nhau. 1/Sử dụng thuộc tính Anchor – Cho phép control phản ứng lại với thao tác resize của form • Control có thể thay đổi vị trí tương ứng với việc resize của form • Control cố định không thay đổi theo việc resize của form – Các trạng thái neo • Left: cố định theo biên trái • Right: cố định theo biên phải • Top: cố định theo biên trên • Bottom: cố định theo biên dưới 59
  14. 2/ Sử dụng thuộc tính Docking Các control có thể gắn (dock) với một cạnh nào đó của form, hoặc container của control. 3/ Sử dụng Containers Container là nhóm Controls dùng làm vùng chứa - có thể chứa các Control khác: Panel, FlowLayoutPanel, SplitContainer, TableLayoutPanel, Goupbox, TabControl  Panel - Công dụng: Chứa nhóm các control. Không có caption, có thanh cuộn (scrollbar)  FlowLayoutPanel - Công dụng: FlowLayoutPanel là một điều khiển kiểu Panel, nó sẽ tự động sắp xếp các điều khiển đặt bên trong nó theo một quy tắc định trước khi thêm các điều khiển vào cũng như thay đổi kích cỡ của nó.  TableLayoutPanel - Công dụng: TableLayoutPanel là một điều khiển kiểu Panel được chia ra thành các ô theo dòng cột để đặt điều khiển vào. Có thể thêm các dòng và các cột cho điều khiển qua các thuộc tính Columns và Rows của TableLayoutPanel, hay qua thực đơn ngữ cảnh khi nhấn phải chuột trên TableLayoutPanel.  SplitContainer - Công dụng: SplitContainer là một Panel chứa hai Panel bên trong. Hai panel này có thể được thay đổi kích thước nhờ một splitter, một vạch thẳng phân cách hai panel.  Groupbox - Công dụng: Hiển thị một khung bao quanh một nhóm control. Có thể hiển thị tiêu đề thông qua thuộc tính Text 60
  15. - Khi xóa một GroupBox thì các control chứa trong nó bị xóa theo.  TabControl - Cho phép thể hiện nhiều page trên một form duy nhất - Mỗi page chứa các control tương tự như group control khác. Mỗi page có tag chứa tên của page. Kích vào các tag để chuyển qua lại giữa các page VI/ Các hộp thoại thông điệp 1/Hộp thoại thông báo đơn giản .NET cung cấp một số dạng hộp thoại xây dựng sẵn. Phổ biến là lớp MessageBox, hiển thị một hộp thoại thông báo đơn giản Ví dụ: MessageBox.Show("You must enter a name.", "Name Entry Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) ; Các kiểu button cho hộp thoại cung cấp bởi enumeration MessageBoxButtons: AbortRetryIgnore, OK, OKCancel, RetryCancel, YesNo, YesNoCancel Các kiểu biểu tượng cho hộp thoại cung cấp bởi enumeration MessageBoxIcon: Asterisk, Information, Error, Hand, Stop, Exclamation, Warning, Question, None. Ví dụ: Kiểm tra người dùng muốn đóng Form hay không, và sử dụng thuộc tính Cancel của lớp FormClosingEventArgs để hủy sự kiện đóng Form Hình: Hộp đối thoại thông báo đơn giản private void Form1_FormClosing(object sender, FormClosingEventArgs e) { DialogResult n = MessageBox.Show("Bạn có muốn thoát không?", "Thoát", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (n != DialogResult.OK) e.Cancel = true; } 2/Hộp thoại phông chữ và màu Hộp đối thoại màu cho phép người dùng chọn một màu từ bảng màu. Bổ sung điều khiển ColorDialog vào Form hay bạn có thể tạo đối tượng của lớp 61
  16. ColorDialog, và thiết lập các thuộc tính cần thiết: - Thuộc tính chính được dùng với lớp này là Color cho màu sắc người dùng chọn - Một tiện lợi khác là có thể hiển thị hộp đối thoại mở rộng, cho phép người dùng định nghĩa màu sắc bằng cách thiết lập thuộc tính AllowFullOpen với giá trị true. - Thuộc tính ShowHelp nếu thiết lập true cho phép người dùng nhấn F1 để hiện trợ giúp Ví dụ: Hiển thị hộp thoại màu Hình 4.3 Hộp đối thoại màu ColorDialog colorDialog1 = new ColorDialog(); //colorDialog1. AllowFullOpen = false; if (colorDialog1.ShowDialog() == DialogResult.OK) textBox1.ForeColor = colorDialog1.Color; Hộp đối thoại phông chữ cho phép người dùng chọn một kiểu phông chữ. Bổ sung điều khiển FontDialog vào Form hay bạn có thể tạo đối tượng của lớp FontDialog, và thiết lập các thuộc tính cần thiết: - Thuộc tính quan trọng nhất là Font, trả về phông chữ được chọn. - Color trả về màu font được chọn. Chú ý thuộc tính ShowColor phải là true để hộp thoại hiển thị hộp danh sách chọn màu - ShowColor nếu giá trị là true, hộp thoại sẽ hiển thị hộp danh sách chọn màu - MaxSize truy cập hay thiết lập cỡ chữ lớn nhất người dùng có thể chọn - MinSize truy cập hay thiết lập cỡ chữ nhỏ nhất người dùng có thể chọn - ShowApply truy cập hay thiết lập giá trị chỉ rõ hộp thoại hiển thị nút Apply hay không. Sự kiện Apply xảy ra trên hộp thoại khi người dùng chọn nút Apply. 62
  17. Nút Apply thường dùng khi người dùng muốn xử lý phông chữ chọn từ hộp thoại trên ứng dụng, mà không cần phải đóng hộp thoại - ShowEffects nếu giá trị là true mặc định, hộp thoại sẽ hiển thị các tùy chọn Strikeout, Underline, và hộp danh sách chọn màu Ví dụ: Hiển thị hộp thoại phông chữ Hình 4.4: Hộp đối thoại phông chữ private void button1_Click(object sender, EventArgs e) { fontDialog1.ShowColor = true; fontDialog1.MinSize = 12; fontDialog1.MaxSize = 24; fontDialog1.ShowApply = true; if (fontDialog1.ShowDialog() == DialogResult.OK) { textBox1.Font = fontDialog1.Font; textBox1.ForeColor = fontDialog1.Color; } } private void fontDialog1_Apply(object sender, EventArgs e) { textBox1.Font = fontDialog1.Font; textBox1.ForeColor = fontDialog1.Color; } VII/ Các hộp thoại tập tin 1/ Hộp thoại lưu tập tin Công dụng: Tạo ra hộp thoại Save File. Tạo SaveFileDialog: Nhắp đúp vào control Thuộc tính: Thuộc tính Ý nghĩa AddExtension True cho phép thêm vào tên mở rộng CheckFileExsits True sẽ xuất hiện hộp thoại với chuỗi cảnh báo nếu người sử dụng chọn tập tin không tồn tại CheckPathExits True sẽ kiểm tra đường dẫn có hợp lệ hay không trước khi trả về 63
  18. CreatePrompt Cửa sổ cảnh báo xuất hiện nếu tập tin chuẩn bị ghi ra chưa tồn tại DefaultExt Chọn tên mở rộng mặc định nếu người sử dụng không cung cấp tên mở rộng cho tập tin. FileName Gán hay trả về tên tập tin chọn Filter Khai báo chuỗi lọc các loại tập tin InitialDirectory Thư mục sẽ chọn khi hộp thoại kích hoạt. Nếu không cung cấp giá trị cho thuộc tính này thì ổ đĩa mặc định sẽ được chọn Overwriteprompt True thì cửa số cảnh báo khi tập tin sẽ ghi đang tồn tại RestoreDirectory Phục hồi lại thư mục hiện hành trước khi đóng hộp thoại Title Tiêu đề của hộp thoại 2/ Hộp thoại mở tập tin Công dụng: Tạo ra hộp thoại Open File. Tạo OpenFileDialog: Nhắp đúp vào control Thuộc tính: Thuộc tính Ý nghĩa AddExtension True cho phép thêm vào tên mở rộng CheckFileExsits True sẽ xuất hiện hộp thoại với chuỗi cảnh báo nếu người sử dụng chọn tập tin không tồn tại CheckPathExits True sẽ kiểm tra đường dẫn có hợp lệ hay không trước khi trả về DefaultExt Chọn tên mở rộng mặc định nếu người sử dụng không cung cấp tên mở rộng cho tập tin. FileName Gán hay trả về tên tập tin chọn FileNames Gán hay trả về mảng chứa tên tập tin chọn Filter Khai báo chuỗi lọc các loại tập tin. InitialDirectory Thư mục sẽ chọn khi hộp thoại kích hoạt. Nếu không cung cấp thuộc tính này thì ổ đĩa mặc định sẽ được chọn MultiSelect True cho phép bạn chọn nhiều tập tin ReadOnlyChecked True là Check vào nút Check có chuỗi open as read-only 64
  19. RestoreDirectory Phục hồi lại thư mục hiện hành trước khi đóng hộp thoại ShowReadOnly True trình bày nút Check có chuỗi Open as read-only Title Tiêu đề hộp thoại VIII/ Thực đơn chính, thực đơn ngữ cảnh MenuStrip: là menu chính xuất hiện ở trên đỉnh của Form. Để tạo menu chính sử dụng điều khiển MenuStrip Menu ngữ cảnh (Context menu): là menu xuất hiện tùy vào ngữ cảnh khi kích phải trên điều khiển nào đó. Menu ngữ cảnh thường chứa các tùy chọn thường xuyên sử dụng. Để tạo menu ngữ cảnh, sử dụng điều khiển ContextMenuStrip. 1/ MenuStrip Menu là phần cần thiết của ứng dụng giao diện đồ họa. Các menu có thể được thêm vào các ứng dụng Windows Forms rất dễ dàng. Để thêm một menu vào một Form, đơn giản thêm điều khiển MenuStrip từ thanh công cụ vào Form và thiết lập thuộc tính Items cho danh sách các mục menu. Khi điều khiển MenuStrip được thêm vào Form nó sẽ xuất hiện trong vùng bên dưới thiết kế Form. Khi biểu tượng này được chọn, menu chính sẽ xuất hiện trong Form. Có thể chỉnh sửa các mục menu bằng cách gõ các mục menu khác nhau. Xóa mục menu từ thanh menu bằng cách kích phải mục menu, chọn Delete. Sử dụng thanh phân chia để chia các mục menu thành các nhóm bằng cách kích phải trên mục menu, chọn Insert/ Separator. Menu chính (MenuStrip) bao gồm danh sách các mục menu (đối tượng ToolStripMenuItem). Có thể thêm, xóa các mục menu, sử dụng các phương thức của ToolStripItemCollection Items. - ToolStripItemCollection Items: thiết lập hay truy cập danh sách các mục menu Các thuộc tính thường dùng của mục menu ToolStripMenuItem: - string Text: thiết lập hay truy cập văn bản hiển thị trên mục menu - Image Image: thiết lập hay truy cập biểu tượng hình ảnh trước mỗi mục menu - string ToolTipText: thiết lập hay truy cập văn bản hiển thị khi rê mouse đến mục menu - bool AutoToolTip: thiết lập hay truy cập giá trị chỉ rõ mô tả ngắn có hiển thị 65
  20. hay không khi rê mouse đến mục menu this.toolStripMenuItem1.AutoToolTip = true; - ToolStripItemDisplayStyle DisplayStyle: thiết lập hay truy cập dạng hiển thị mục menu dạng văn bản hay hình ảnh bởi các giá trị thuộc enumeration ToolStripItemDisplayStyle là Image, ImageAndText, None hay Text: this.toolStripMenuItem1.DisplayStyle= ToolStripItemDisplayStyle.ImageAndText; - TextImageRelation TextImageRelation: thiết lập hay truy cập mối quan hệ vị trí văn bản và hình ảnh trên mục menu, bởi các giá trị thuộc enumeration TextImageRelation - bool Checked: thiết lập hay truy cập giá trị xác định có hay không xuất hiện biểu tượng đánh dấu trước văn bản trên mục menu cho biết mục menu đang được chọn hay thôi chọn - CheckState CheckState: thiết lập hay truy cập giá trị chỉ rõ trạng thái của mục menu bởi các giá trị thuộc enumeration CheckState là Checked, Unchecked, Indeterminate - LayoutStyle: thiết lập hay truy cập hướng trình bày của StatusStrip bởi các giá trị thuộc enumeration ToolStripLayoutStyle Hình 4.5: Form với MenuStrip và ToolStrip 2/Menu ngữ cảnh (Context Menu) Các ứng dụng Windows cho phép người dùng kích phải trên điều khiển nào đó sẽ xuất hiện một menu theo ngữ cảnh. Các menu theo ngữ cảnh có thể được thêm vào các ứng dụng Windows Forms rất dễ dàng. Để thêm một menu ngữ cảnh vào một Form, đơn giản thêm điều khiển ContextMenuStrip từ thanh công cụ vào Form. Khi điều khiển ContextMenuStrip được thêm vào Form nó sẽ xuất hiện trong vùng footer bên dưới bề mặt thiết kế Form. Khi biểu tượng này được chọn, menu chính, nếu nó tồn tại sẽ không xuất 66
nguon tai.lieu . vn