Mục tiêu Biết cách sử dụng các control menu, toolbar, status bar.. Tạo custom control theo mục đích sử dụng.. Nội dung Làm việc với các control menu MenuStrip cũng là dạng contr
Trang 1Mục tiêu
Biết cách sử dụng các control menu, toolbar, status bar
Tạo custom control theo mục đích sử dụng
Nội dung
Làm việc với các control menu
MenuStrip cũng là dạng control chứa list các control con , các thành phần item chính là
các kế thừa từ ToolStripItem
Chọn control MenuStrip từ ToolBox
Lựa chọn MenuItem trên giao diện design
Thay đổi nội dung trên designer
Trang 2 Bản chất MenuItem cũng là 1 control (tương đương Button) nên cần đặt (Name) rõ ràng
để dễ thao tác
Tiếp tục tạo thêm thành phần kiểu ComboBox và TextBox Đặt (Name) lần lượt là
tscbMenu và tstxtMenu
Tiếp tục tạo các thành phần con của Menu lv.1 trên giao diện designer rất đơn giản
Trang 3 Tạo phương thức xử lý event Click của các item dạng MenuItem (lưu ý vì MenuStrip với thành phần item cũng là dạng phân cấp nên cũng giống như TreeView thì mỗi MenuItem đều có thuộc tính DropDownItems giữ các item con)
public partial class frmMain : Form
{
public frmMain()
{
InitializeComponent();
InitMenuStrip();
}
void InitMenuStrip()
{
//duyệt qua các item của MenuStrip
//các thành phần con đều là thừa kế từ ToolStripItem
foreach (ToolStripItem item in menuStrip1.Items)
{
//kiểm tra có phải là ToolStripMenuItem không
ToolStripMenuItem tsmi = item as ToolStripMenuItem;
if (tsmi != null)
{
tsmi.Click += new EventHandler(menuItemClick);
ProcessMenuItem(tsmi);
}
}
}
//phương thức duyệt các item là MenuItem
void ProcessMenuItem(ToolStripMenuItem tsmi)
{
foreach (ToolStripItem item in tsmi.DropDownItems)
{
//kiểm tra có phải là ToolStripMenuItem không
ToolStripMenuItem tsmiCur = item as ToolStripMenuItem;
if (tsmiCur != null)
{
tsmiCur.Click += new EventHandler(menuItemClick);
ProcessMenuItem(tsmiCur);
}
}
}
//phương thức xử lý event click của MenuItem
void menuItemClick(object sender, EventArgs )
{
ToolStripMenuItem mi = sender as ToolStripMenuItem;
MessageBox.Show(string.Format("{0} clicked", mi.Text));
}
}
Tạo các item cho ComboBox
public frmMain()
{
Trang 4InitializeComponent();
InitMenuStrip();
InitMenuComboBox();
}
void InitMenuComboBox()
{
for (int = 0; i < 10; i++)
{
tscbMenu.Items.Add( ToString());
}
tscbMenu.SelectedIndex = 0;
tscbMenu.DropDownStyle = ComboBoxStyle.DropDownList;
}
Làm việc với control ToolStrip (ToolBar)
Tương tự MenuStrip, chủ yếu là khác biệt về cách trình bày vì các item của ToolStrip
cũng là các control dẫn suất từ ToolStripItem
Lưu ý cần nhớ là trong ToolStrip cũng chứa dạng Menu đó chính là control
DropDownButton
Làm việc với StatusStrip và ContextMenuStrip
Tự tìm hiểu vì hoàn toàn tương tự MenuStrip và ToolStrip nhưng đơn giản hơn
Tạo Custom Control theo mục đích sử dụng
Xét mục đích cần TextBox chỉ cho nhập số trong khoảng giá trị xác định
Thêm 1 class vào project và đặt tên là MyTextBox
Thực hiện code như sau:
public class MyTextBox : TextBox
Trang 5{
//giá trị chặn dưới
int minValue;
public int MinValue
{
get
{
return minValue;
}
set
{
minValue = value;
if (minValue > MaxValue)
{
int temp = minValue;
minValue = maxValue;
maxValue = temp;
}
}
}
//giá trị chặn trên
int maxValue;
public int MaxValue
{
get { return maxValue; }
set
{
int temp = minValue;
minValue = maxValue;
maxValue = temp;
}
}
//sử dụng 2 biến lưu giá trị để thực hiện việc
//trả về giá trị ban đầu khi nhập vào quá giới hạn
int curValue = 0, oldValue = 0;
//xử lý event nhấn phím để kiểm soát giá trị nhập vào
protected override void OnKeyPress(KeyPressEventArgs ) {
//kiểm tra nếu phím nhập vào không phải
//là ký số hay phím điều khiển thì dừng
if (!char.IsControl( KeyChar) &&
!char.IsDigit( KeyChar))
{
//xác định dừng event
e Handled = true;
return;
}
//kiểm tra để lưu giá trị hiện tại
int.TryParse(Text, out curValue);
if (curValue > maxValue)
{
curValue = oldValue;
e Handled = true;
return;
}
else
Trang 6{
oldValue = curValue;
}
base.OnKeyPress( );
}
//khôi phục lại giá trị sau khi kết thúc nhập
//đó là lúc nhả phím
protected override void OnKeyUp(KeyEventArgs ) {
int value = int.Parse(Text);
if (value < MinValue)
{
//Text = MinValue.ToString();
Text = curValue.ToString();
}
if (value > MaxValue)
{
//Text = MaxValue.ToString();
Text = curValue.ToString();
}
base.OnKeyUp( );
}
}
Bài tập
Thực hiện hoàn chỉnh các ví dụ ở trên