Tải bản đầy đủ (.pdf) (6 trang)

Bài tập thực hành lập trình winform bài 4

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (514.3 KB, 6 trang )

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 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.


 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.


 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 e)
{
ToolStripMenuItem mi = sender as ToolStripMenuItem;
MessageBox.Show(string.Format("{0} clicked", mi.Text));
}
}

 Tạo các item cho ComboBox.
public frmMain()
{


InitializeComponent();
InitMenuStrip();
InitMenuComboBox();
}
void InitMenuComboBox()
{
for (int i = 0; i < 10; i++)
{
tscbMenu.Items.Add(i.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


{
//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 e)
{
//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(e.KeyChar) &&
!char.IsDigit(e.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


{
oldValue = curValue;
}
base.OnKeyPress(e);
}
//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 e)
{
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(e);
}
}

Bài tập
Thực hiện hoàn chỉnh các ví dụ ở trên.



×