bài tẬp chƯƠng 1 giao diỆn nâng cao bài 1 ứng dụng · pdf...

14
Hướng dẫn thực hành - Lập trình Windows nâng cao bài tập chương 1 Trang:1/14 BÀI TẬP CHƯƠNG 1 GIAO DIỆN NÂNG CAO Bài 1 ng dng nhi u form dng MDI. Mục đích: Sdng thuộc tính và phương thức ca control nâng cao để to giao din làm bước đệm cho chương kế tiếp kết ni CSDL. 1) Sinh viên tạo giao diện theo hình sau: 2) Nhấn OK Khi nhấn OK thì chương trình tao ra một Form mặc định sinh viên hãy xóa form mặc định và thêm một Form mới từ menu Project/Add windows form. Và đặt tên như sau:

Upload: dinhthien

Post on 15-Feb-2018

243 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: BÀI TẬP CHƯƠNG 1 GIAO DIỆN NÂNG CAO Bài 1 ứng dụng · PDF file//duyet listview va xu ly chuoi foreach (ListViewItem item in lvwThongTinSV.Items) { item.Selected = false;

Hướng dẫn thực hành - Lập trình Windows nâng cao bài tập chương 1

Trang:1/14

BÀI TẬP CHƯƠNG 1

GIAO DIỆN NÂNG CAO

Bài 1 ứng dụng nhiều form dạng MDI. Mục đích:

Sử dụng thuộc tính và phương thức của control nâng cao để tạo giao diện

làm bước đệm cho chương kế tiếp kết nối CSDL.

1) Sinh viên tạo giao diện theo hình sau:

2) Nhấn OK

Khi nhấn OK thì chương trình tao ra một Form mặc định sinh viên hãy xóa form

mặc định và thêm một Form mới từ menu Project/Add windows form. Và đặt

tên như sau:

Page 2: BÀI TẬP CHƯƠNG 1 GIAO DIỆN NÂNG CAO Bài 1 ứng dụng · PDF file//duyet listview va xu ly chuoi foreach (ListViewItem item in lvwThongTinSV.Items) { item.Selected = false;

Hướng dẫn thực hành - Lập trình Windows nâng cao bài tập chương 1

Trang:2/14

(Mục đích đọan trên là không muốn tên mặc định).

3) Kế tiếp sinh viên cho chạy Form frmmain lên trước bằng cách vào file

Program.cs sửa lại như sau : static void Main()

{

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(fal

se);

Application.Run(new frmMain());// co nghia khi

chay //project thi frmMain chay truoc

}

4) Tiếp tục tạo 3 form con là frmTreeview, frmListview và frmTreeListView

kết hợp. Ba Form con vẫn còn trống chưa có thết kế gì.

Quay lại form frmMain thiết kế như như hình sau:

Page 3: BÀI TẬP CHƯƠNG 1 GIAO DIỆN NÂNG CAO Bài 1 ứng dụng · PDF file//duyet listview va xu ly chuoi foreach (ListViewItem item in lvwThongTinSV.Items) { item.Selected = false;

Hướng dẫn thực hành - Lập trình Windows nâng cao bài tập chương 1

Trang:3/14

5) Viết lệnh cho menu và các Button trên Toolbar tương ứng ý nghĩa. Ví dụ:

Menu File/Open/ tree view thì mở Form Tree view lên.

6) Chạy thử chương trình với các lệnh tương ứng trên form Main.

7) Thiết kế các Form con Treeview như sau.

Page 4: BÀI TẬP CHƯƠNG 1 GIAO DIỆN NÂNG CAO Bài 1 ứng dụng · PDF file//duyet listview va xu ly chuoi foreach (ListViewItem item in lvwThongTinSV.Items) { item.Selected = false;

Hướng dẫn thực hành - Lập trình Windows nâng cao bài tập chương 1

Trang:4/14

Yêu cầu:

+ Combobox Lớp có hai hoặc 3 lớp được đưa vào trong lúc runtime, mặc định

lớp thứ 2 trong Combobox được chọn trước.

+ contextMenustrip là của Treeview

+ IlsTree là Imagelist cho Treeview chứa 2 hình thể hiện hai trạng thái chọn và

không chọn của Node.

+ Nhấn nút Cập nhật là phải cài bẫy lỗi kiểm tra thông tin nhập đúng đủ trên

form rồi đưa vào Treeview theo nguyên tắc: mã sinh viên là node gốc các thông

tin khác là node con.

+ Nhấn node Tạo mới xóa các thông tin cho phép nhập thông tin một sinh viên

mới.

+ Nhấn nút thoát hiện thông báo xác nhận thông tin có muốn thóat không.

+ Khi cursor focus tại ô Mã SV mà nhấn phím enter(13) thì di chuyển corsor cho

cho hợp lý và tương tự cho các textbox khác

Gợi ý: private void txtMaSV_KeyPress(object sender, KeyPressEventArgs e)

{

if (e.KeyChar == (char)13)

{

SendKeys.Send("{tab}");

}

}

+ viết lệnh cho contextMenustrip

Hướng dẫn đoạn code thêm một node:

// methods add node

//treSV.Nodes.Add(objnode);

TreeNode nodeCha = new TreeNode();

nodeCha.Text = txtMa.Text;

nodeCha.Nodes.Add(txtHT.Text);

nodeCha.Nodes.Add(txtDC.Text);

nodeCha.Nodes.Add(dtpNS.Text);

Page 5: BÀI TẬP CHƯƠNG 1 GIAO DIỆN NÂNG CAO Bài 1 ứng dụng · PDF file//duyet listview va xu ly chuoi foreach (ListViewItem item in lvwThongTinSV.Items) { item.Selected = false;

Hướng dẫn thực hành - Lập trình Windows nâng cao bài tập chương 1

Trang:5/14

nodeCha.Nodes.Add(cboLop.Items[cboLop.SelectedIndex

].ToString () );

nodeCha.Nodes.Add(txtQueQuan.Text);

treSV.Nodes.Add(nodeCha);

//hinh??

8) Viết lệnh cho các Form Listview dựa theo kỹ năng đã học trong giờ lý

thuyết.

Yêu cầu:

+ Thông tin Sinh Viên không thiết kế mà copy từ form Treeview qua.

+ ilsNho là Imagelist có kìch thước mặc định 16 x 16 phục vụ cho ListView

+ ilsLon là Imagelist có kìch thước mặc 48 x 48 phục vụ cho ListView

+ contextMenustrip như hình khi Right click trên Listview thì hiện ra.

+ Nhấn nút Cập nhật Item thì đưa thông tin sinh viên vào Listview theo nguyên

tắc dựa theo hình.

+ Nhấn nút Xóa item là xóa item đang chọn trên Liatview ( có thể chọn nhiều),

nhưng phải cài bẫy lỗi xác nhận lại tình trạng xóa.

- Xác nhận đã chọn Item nào chưa

- Xác nhận có chắc xóa không.

Page 6: BÀI TẬP CHƯƠNG 1 GIAO DIỆN NÂNG CAO Bài 1 ứng dụng · PDF file//duyet listview va xu ly chuoi foreach (ListViewItem item in lvwThongTinSV.Items) { item.Selected = false;

Hướng dẫn thực hành - Lập trình Windows nâng cao bài tập chương 1

Trang:6/14

+ Nhấn nút thêm mới thì xóa thông tin sinh viên cho phép nhập thông tin Sinh

Viên mới.

+ Nếu chọn một Sinh Viên nào trong Listview thì hiện lại thông tin Sinh Viên đó

lên các Texbox tương ứng đễ cho phép người sử dụng có thể thay đổi chỉnh sửa

thông tin phục vụ cho lệnh Update trong contexMenustrip.

+ Viết lệnh tương ứng phù hợp cho các chức năng trong contexMenustrip.

Code hướng dẫn thêm một item vào listview.

//thêm item

ListViewItem lvwItem = new ListViewItem();

STT +=1;

lvwItem.Text = STT.ToString();

lvwItem.SubItems.Add(txtMa.Text);

lvwItem.SubItems.Add(txtHT.Text);

lvwItem.SubItems.Add(txtDC.Text);

lvwItem.SubItems.Add(dtpNS.Text);

lvwItem.SubItems.Add(cboLop.Items[cboLop.SelectedIndex

].ToString() );

lvwItem.ImageIndex = 0;

lvwThongTinSV.Items.Add(lvwItem);

Code hướng dẫn xóa Item đang chọn trong listview

// xoa ??

DialogResult hoixoa;

if (lvwThongTinSV.SelectedItems.Count >0)//có Item dang chon

{

hoixoa = MessageBox.Show("bạn có chắc xóa?", "Hỏi Xóa",

MessageBoxButtons.YesNo, MessageBoxIcon.Question,

MessageBoxDefaultButton.Button1);

if (hoixoa == DialogResult.Yes)

{

// lvwThongTinSV.SelectedItems[0].Remove(); xóa 1 item

Page 7: BÀI TẬP CHƯƠNG 1 GIAO DIỆN NÂNG CAO Bài 1 ứng dụng · PDF file//duyet listview va xu ly chuoi foreach (ListViewItem item in lvwThongTinSV.Items) { item.Selected = false;

Hướng dẫn thực hành - Lập trình Windows nâng cao bài tập chương 1

Trang:7/14

//xóa các item dang chọn

foreach (ListViewItem lvwItem in lvwThongTinSV.SelectedItems)

{

lvwItem.Remove();

}

}

}

9) Viết lệnh cho Form Tree và Listview kết hợp dựa theo yêu cầu đã học trong

giờ lý thuyết.

Yêu cầu:

+ Các thông tin chung như các form đã làm các bài trước .

+ Tạo thêm obj sinh viên chứa thông tin sinh viên.

+ khi form load tao sẵn dữ liệu (xem hình)

+ Nhấn nút cập nhật đưa thông tin vào Treeview theo nguyên tắc

- Phải đảm bảo node khoa nào đó đang chọn

- Node chỉ hiện tên sinh viên

+ Khi chọn node trên TreeView thì làm công việc sau.

- Nếu nhấn Node gốc thì hiện thông tin toàn bộ sinh viên vào Listview

- Nếu nhấn Node khoa nào đó thì hiện thông tin toàn bộ sinh viên thuộc

khoa vào Listview.

Code tham khảo khi chọn node khoa

void ThemItemToListView(SinhVien sv)

{

ListViewItem lvwItem = new ListViewItem();

Page 8: BÀI TẬP CHƯƠNG 1 GIAO DIỆN NÂNG CAO Bài 1 ứng dụng · PDF file//duyet listview va xu ly chuoi foreach (ListViewItem item in lvwThongTinSV.Items) { item.Selected = false;

Hướng dẫn thực hành - Lập trình Windows nâng cao bài tập chương 1

Trang:8/14

lvwItem.Text = lvwThongTinSV.Items.Count + 1 + "";

lvwItem.SubItems.Add(sv.Ma);

lvwItem.SubItems.Add(sv.Hoten);

lvwItem.SubItems.Add(sv.DiaChi);

lvwThongTinSV.Items.Add(lvwItem);

}

private void treDanhSach_AfterSelect(object sender, TreeViewEventArgs

e)

{

//duyệt node đang chọn 1 cấp

lvwThongTinSV.Items.Clear();

if (treDanhSach.SelectedNode != null)//co node dang chon

if (treDanhSach.SelectedNode.Level == 1)//cap khoa

{

foreach (TreeNode ncon in treDanhSach.SelectedNode.Nodes)

{

SinhVien sv = (SinhVien)ncon.Tag;

ThemItemToListView(sv);

}

}

else if (treDanhSach.SelectedNode.Level == 0)

{

foreach (TreeNode nconKhoa in treDanhSach.SelectedNode.Nodes)

{

foreach (TreeNode nconsv in nconKhoa.Nodes)

{

SinhVien sv = (SinhVien)nconsv.Tag;

ThemItemToListView(sv);

}

}

}

}

+ Nhấn nút tìm thì tìm trong listview

Code hướng dẫn cho nút tìm cac em tham khảo:

private void btnTim_Click(object sender, EventArgs e)

{

//duyet listview va xu ly chuoi

foreach (ListViewItem item in lvwThongTinSV.Items)

{

item.Selected = false;

}

foreach (ListViewItem item in lvwThongTinSV.Items)

{

Page 9: BÀI TẬP CHƯƠNG 1 GIAO DIỆN NÂNG CAO Bài 1 ứng dụng · PDF file//duyet listview va xu ly chuoi foreach (ListViewItem item in lvwThongTinSV.Items) { item.Selected = false;

Hướng dẫn thực hành - Lập trình Windows nâng cao bài tập chương 1

Trang:9/14

string hoten = item.SubItems[2].Text;

int vitri = hoten.LastIndexOf(" ");//vi tri cuoi

string ten = hoten.Substring(vitri + 1, hoten.Length - (vitri+1));

if (ten.Equals(txtTenTim.Text))

{

MessageBox.Show("tim thay sv : " + hoten);

item.Selected = true;

lvwThongTinSV.Focus();

break;

}

}

}

10) Chạy chương trình vào Menu của form main cố tình nhấn hai lần mở form

con thì hiện thị 2 lần form con.

11) Khắc phục form chỉ hiện lên một lần.

- Nếu form con chưa mở mà nhấn nút mở form con thì hiện form con

- Nếu form con đã mở mà cố tình nhấn nút mở form con thì Active form

con không hiện thêm form con nữa.

Gợi ý : private void mnuFileOpenTree_Click(object sender,

EventArgs e)

{if (KiemTraFormTonTai("frmTreeView") == false) {frmTreeView frm = new frmTreeView();

frm.Name = "frmTreeView";

frm.MdiParent = this;

frm.Show();

}

}

Boolean KiemTraFormTonTai(string frmName) {

foreach (Form frm in this.MdiChildren)

{

if (frm.Name.Equals(frmName))

{

frm.Activate(); // active form

return true;

}

}

return false ;

}

Page 10: BÀI TẬP CHƯƠNG 1 GIAO DIỆN NÂNG CAO Bài 1 ứng dụng · PDF file//duyet listview va xu ly chuoi foreach (ListViewItem item in lvwThongTinSV.Items) { item.Selected = false;

Hướng dẫn thực hành - Lập trình Windows nâng cao bài tập chương 1

Trang:10/14

12) Chạy lại chương trình thử các tác vụ chức năng.

11) Thêm login

Yêu cầu:

+ Chỉnh sửa thông tin trong form login nhu hình

+ Thuộc tính Maximum của Progressbar là 500

+ Nhấn login nếu đúng user name và password thì chạy progressbar nếu

progressbar vừa có giá trị bằng max thì đóng form login hiện form main và đồng

thời truyền dữ liệu user name qua form Main đưa vào Statusbar strip.

+ Nếu login sai 3 lần thì thoát, mỗi lần sai phải báo nguyên nhân sai

Page 11: BÀI TẬP CHƯƠNG 1 GIAO DIỆN NÂNG CAO Bài 1 ứng dụng · PDF file//duyet listview va xu ly chuoi foreach (ListViewItem item in lvwThongTinSV.Items) { item.Selected = false;

Hướng dẫn thực hành - Lập trình Windows nâng cao bài tập chương 1

Trang:11/14

Gợi ý form login

private void btnLogin_Click(object sender, EventArgs e)

{

if (!txtUserName.Text.Equals("Ngô Đình Hai") ||

!txtPassword.Text.Equals("123"))

{

DemSai++;

MessageBox.Show("?? sai");

}

else if(txtUserName.Text.Equals("Ngô Đình Hai") && txtPassword.Text

.Equals("123"))

{

// this.DialogResult = DialogResult.OK;

timer1.Interval = 100;

timer1.Start();

}

if (DemSai >= 3)

{

MessageBox.Show("Sai qua goi han cho pppp??");

this.Close();

}

}

private void timer1_Tick(object sender, EventArgs e)

{

progressBar1.Value += 10;

if (progressBar1.Value >= progressBar1.Maximum)

{

timer1.Stop();

this.DialogResult = DialogResult.OK;

}

}

12 ) Hiệu chỉnh khi ứng dụng chạy lên form login chạy trước

Gợi ý file Program.cs

static void Main()

{

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

// Application.Run(new frmMain());

frmLogin frm = new frmLogin();

if (frm.ShowDialog() == DialogResult.OK)

{

Page 12: BÀI TẬP CHƯƠNG 1 GIAO DIỆN NÂNG CAO Bài 1 ứng dụng · PDF file//duyet listview va xu ly chuoi foreach (ListViewItem item in lvwThongTinSV.Items) { item.Selected = false;

Hướng dẫn thực hành - Lập trình Windows nâng cao bài tập chương 1

Trang:12/14

string ten = frm.txtUserName.Text;

Application.Run(new frmMain(ten));

}

}

Bài 2 Lấy dữ liệu từ form khác.

Hiệu chỉnh các button cung lắng nghe cùng một sự kiện

Page 13: BÀI TẬP CHƯƠNG 1 GIAO DIỆN NÂNG CAO Bài 1 ứng dụng · PDF file//duyet listview va xu ly chuoi foreach (ListViewItem item in lvwThongTinSV.Items) { item.Selected = false;

Hướng dẫn thực hành - Lập trình Windows nâng cao bài tập chương 1

Trang:13/14

Thanh lọc xem button nào đực chọn tham khảo code

private void btnHonDa_Click(object sender, EventArgs e)

{

Button btn = (Button)sender;

hangxe = btn.Text;

}

Khi double click vào text hãng xe hiện form 2, chọn xe thì hiện thông tin vào

text tham khao code:

private void txtxe_DoubleClick(object sender, EventArgs e)

{

Form2 frm = new Form2();

if (frm.ShowDialog() == DialogResult.OK)

this.txtxe.Text = frm.hangxe;

//hangxe các bạn hãy trả lời???

}

Bài 3: Truyền dữ liệu qua lại giữa 2 form.

1) Khi nhấn nút add name thì đưa thông tin vào listview.

Page 14: BÀI TẬP CHƯƠNG 1 GIAO DIỆN NÂNG CAO Bài 1 ứng dụng · PDF file//duyet listview va xu ly chuoi foreach (ListViewItem item in lvwThongTinSV.Items) { item.Selected = false;

Hướng dẫn thực hành - Lập trình Windows nâng cao bài tập chương 1

Trang:14/14

2) Khi double click vào item trên listview tái hiện thông tin vào form2

Code tham khảo

private void lvw_DoubleClick(object sender, EventArgs e)

{

frm2 frm = new frm2();

if (lvwDanhSach.SelectedItems.Count > 0)

{

ListViewItem lvwItem =

lvwDanhSach.SelectedItems[lvwDanhSach.SelectedItems.Count - 1];

// day du lieu tu form1==> from2

frm.txtlast.Text = lvwItem.SubItems[0].Text;

frm.txtfirst.Text = lvwItem.SubItems[1].Text;

frm.txtphone.Text = lvwItem.SubItems[2].Text;

// code cho ý 3

if (frm.ShowDialog() == DialogResult.OK)

{

lvwItem.SubItems[0].Text = frm.txtlast.Text;

lvwItem.SubItems[1].Text = frm.txtfirst.Text;

lvwItem.SubItems[2].Text = frm.txtphone.Text;

}

}

}

3) Sau khi sửa mà nhấn nút chỉnh sửa thì tái hiện lại thông tin vừa sửa vào

listview.

Code tham khảo đoạn trên

4) Chọn view kiểu nào thì hiện view by kiểu đó

Code tham khảo

lvwDanhSach.View = View.LargeIcon;

lbldetail.Text = lvwDanhSach.View.ToString();