chuong 2 windows form (2)

21
Lập trình trên môi trường Windows Chương 2: Windows form Phần 1. Windows form 1 Bài tp 1 Yêu cu Viết chương trình windows form nhập vào tên người dùng và xut ra messagebox câu chào tên người đó. Khi bm nút thoát sxut hin thông báo hỏi xem “Bạn có muốn thoát không?”. Hướng dn

Upload: nguyen-hoang-phung

Post on 22-Oct-2014

960 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Chuong 2 Windows Form (2)

Lập trình trên môi trường Windows

Chương 2: Windows form

Phần 1. Windows form 1

Bài tập 1

Yêu cầu

Viết chương trình windows form nhập vào tên người dùng và xuất ra messagebox câu chào tên

người đó. Khi bấm nút thoát sẽ xuất hiện thông báo hỏi xem “Bạn có muốn thoát không?”.

Hướng dẫn

Page 2: Chuong 2 Windows Form (2)

Bước 1: tạo dự án windows form

Mở phần mềm Visual Studio

Vào menu File – New – Project…

Tại màn hình New Project, chọn ngôn ngữ là C#, loại ứng dụng là Windows Application,

tên dự án là Baitap1

Bước 2: thiết kế giao diện

Kéo thả các control theo giao diện yêu cầu, đặt tên cho các control

Textbox nhập tên là “txtTen”

Button Xin chào là “btnXinChao”

Button Thoát là “btnThoat”

Bước 3: viết code xử lý các button

Xử lý button Xin chào: nhấp đúp (double click) vào button Xin chào

private void btnXinChao_Click(object sender, EventArgs e)

{

MessageBox.Show("Xin chao " + txtTen.Text, "Bai tap 1");

}

Xử lý button Thoát: nhấp đúp (double click) vào button Thoát

private void btnThoat_Click(object sender, EventArgs e)

{

DialogResult result = MessageBox.Show("Ban co muon thoat?", "Bai

tap 1", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

if (result == DialogResult.Yes)

{

this.Close();

}

}

Bài tập 2

Yêu cầu

Viết chương trình nhập vào 2 số nguyên, xuất ra tổng của 2 số.

Page 3: Chuong 2 Windows Form (2)

Hướng dẫn

Bước 1: tạo dự án Windows Application, đặt tên dự án là Baitap2

Bước 2: thiết kế giao diện

Kéo thả controls theo yêu cầu, đặt tên cho các controls

Textbox số thứ 1 là “txtSo1”

Textbox số thứ 2 là “txtSo2”

Button tính tổng là “btnTong”

Textbox kết quả là “txtKetQua”

Bước 3: viết code xử lý sự kiện click của button tổng

private void btnTong_Click(object sender, EventArgs e)

{

int so1 = int.Parse(txtSo1.Text);

int so2 = int.Parse(txtSo2.Text);

int tong = so1 + so2;

txtKetQua.Text = tong.ToString();

}

Bài tập 3

Yêu cầu

Viết chương trình nhập vào 2 số nguyên và phép toán (+,-,*,/ ) và xuất ra kết quả của phép toán.

Sử dụng combobox để chọn phép toán.

Page 4: Chuong 2 Windows Form (2)

Hướng dẫn

Bước 1: thiết kế giao diện, đặt tên combobox phép toán là cbxPhepToan

Bước 2: thêm danh sách các phép toán vào combobox trong sự kiện Load của form

private void Form1_Load(object sender, EventArgs e)

{

cbxPhepToan.Items.Add("+");

cbxPhepToan.Items.Add("-");

cbxPhepToan.Items.Add("*");

cbxPhepToan.Items.Add("/");

}

Bước 3: viết code xử lý sự kiện click của button Tính

private void btnTinh_Click(object sender, EventArgs e)

{

int so1 = int.Parse(txtSo1.Text);

int so2 = int.Parse(txtSo2.Text);

int ketqua = 0;

switch (cbxPhepToan.SelectedIndex)

{

case 0:

ketqua = so1 + so2;

break;

case 1:

ketqua = so1 - so2;

break;

case 2:

ketqua = so1 * so2;

break;

case 3:

ketqua = so1 / so2;

break;

}

txtKetQua.Text = ketqua.ToString();

}

Page 5: Chuong 2 Windows Form (2)

Bài tập 4

Yêu cầu

Viết chương trình nhập vào 2 số nguyên và phép toán (+,-,*,/ ) và xuất ra kết quả của phép toán.

Sử dụng radiobutton để chọn phép toán.

Hướng dẫn

Bước 1: đặt tên 4 radiobutton là rbCong, rbtTru, rbtNhan, rbtChia

Bước 2: viết code xử lý phép tính

if (rbtCong.Checked == true)

{

ketqua = so1 + so2;

}

else if (rbtTru.Checked == true)

{

ketqua = so1 - so2;

}

else if (rbtNhan.Checked == true)

{

ketqua = so1 * so2;

}

else if (rbtChia.Checked == true)

{

ketqua = so1 / so2;

}

Bài tập 5

Yêu cầu

Page 6: Chuong 2 Windows Form (2)

Viết chương trình thêm, xóa, sửa, ghi file, đọc file một mảng số nguyên. Cấu trúc của tập tin ghi

là: dòng đầu tiên lưu số lượng phần tử mảng (n phần tử), n dòng tiếp theo mỗi dòng lưu một

phần tử.

Hướng dẫn

Bước 1: thiết kế giao diện, đặt tên listbox mảng là “”lbxMang”, textbox giá trị là “txtGiaTri”

Bước 1: khai báo mảng số nguyên trong form

namespace Baitap5

{

public partial class Form1 : Form

{

List<int> mang = new List<int>();

public Form1()

{

InitializeComponent();

}

// ...

Bước 2: viết hàm xử lý button Thêm

private void btnThem_Click(object sender, EventArgs e)

{

int so = int.Parse(txtGiaTri.Text);

// them vao trong mang

mang.Add(so);

// them vao trong listbox

lbxMang.Items.Add(so.ToString());

}

Page 7: Chuong 2 Windows Form (2)

Bước 3: viết hàm xử lý button Xóa

private void btnXoa_Click(object sender, EventArgs e)

{

int chiso = lbxMang.SelectedIndex;

if (chiso > -1)

{

// xoa trong mang

mang.RemoveAt(chiso);

// xoa trong listbox

lbxMang.Items.RemoveAt(chiso);

}

else

{

MessageBox.Show("Ban chua chon phan tu can xoa", "Thong bao");

}

}

Bước 4: viết hàm xử lý button Cập nhật

private void btnCapNhat_Click(object sender, EventArgs e)

{

int chiso = lbxMang.SelectedIndex;

if (chiso > -1)

{

int so = int.Parse(txtGiaTri.Text);

// cap nhat trong mang

mang[chiso] = so;

// xoa trong listbox

lbxMang.Items[chiso] = so.ToString();

}

else

{

MessageBox.Show("Ban chua chon phan tu can cap nhat", "Thong

bao");

}

}

Bước 5: viết hàm xử lý button Ghi file

private void btnGhiFile_Click(object sender, EventArgs e)

{

// hien thi dialog ghi file

SaveFileDialog dialog = new SaveFileDialog();

dialog.Filter = "Ghi tap tin txt|*.txt";

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

{

// lay duong dan file can ghi

string duongdan = dialog.FileName;

// ghi mang xuong file

StreamWriter ghi = new StreamWriter(duongdan);

ghi.WriteLine(mang.Count.ToString());

for (int i = 0; i < mang.Count; i++)

Page 8: Chuong 2 Windows Form (2)

{

ghi.WriteLine(mang[i]);

}

ghi.Close();

}

}

Bước 6: viết hàm xử lý button Đọc file

private void btnDocFile_Click(object sender, EventArgs e)

{

// xoa het cac phan tu dang co trong mang va listbox

mang.Clear();

lbxMang.Items.Clear();

// hien thi dialog doc file

OpenFileDialog dialog = new OpenFileDialog();

dialog.Filter = "Doc tap tin txt|*.txt";

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

{

// lay duong dan file can doc

string duongdan = dialog.FileName;

// ghi mang xuong file

StreamReader doc = new StreamReader(duongdan);

int n = int.Parse(doc.ReadLine());

for (int i = 0; i < n; i++)

{

int so = int.Parse(doc.ReadLine());

mang.Add(so);

// them vao trong listbox

lbxMang.Items.Add(so.ToString());

}

doc.Close();

}

}

Bước 7: Viết hàm xử lý khi chọn một phần tử bên listbox sẽ hiển thị giá trị bên textbox giá trị.

Ta tạo sự kiện SelectedIndexChange của lbxMang

private void lbxMang_SelectedIndexChanged(object sender, EventArgs e)

{

int chiso = lbxMang.SelectedIndex;

if (chiso > -1)

{

txtGiaTri.Text = mang[chiso].ToString();

}

}

Phần 2. Windows form 2

Page 9: Chuong 2 Windows Form (2)

Bài tập 6

Yêu cầu

Viết chương trình nhập vào 2 phân số và phép toán (+,-,*,/ ) và xuất ra kết quả của phép toán. Sử

dụng combobox để chọn phép toán.

Hướng dẫn

Bước 1: tạo lớp PhanSo, tham khảo lại bài hướng dẫn chương 1

Bước 2: thiết kế giao diện và xử lý

Bài tập 7

Yêu cầu

Viết chương trình My Notepad đơn giản

- Đọc file : hiển thị hộp thoại chọn file *.txt và hiển thị nội dung file lên textbox

txtNoiDung

- Ghi file : hiển thị hộp thoại ghi file *.txt và lưu nội dung trong textbox txtNoiDung vào

trong file

Page 10: Chuong 2 Windows Form (2)

Hướng dẫn

Bước 1: thiết kế giao diện, textbox nội dung có thuộc tính Multiline=true

Bước 2: viết code button đọc file

private void btnDoc_Click(object sender, EventArgs e) { // tạo hộp thoại mở tập tin OpenFileDialog dlg = new OpenFileDialog(); // chỉ mở các tập tin .txt dlg.Filter = "Chon tap tin .txt|*.txt"; // hiển thị hộp thoại if (dlg.ShowDialog() == DialogResult.OK) { // lấy đường dẫn tập tin đã chọn string filePath = dlg.FileName; // mở tập tin để đọc StreamReader reader = new StreamReader(filePath); // đọc nội dung toàn bộ tập tin string noiDung = reader.ReadToEnd(); // đóng tập tin reader.Close(); // gán nội dung vào textbox txtNoiDung.Text = noiDung; }

Page 11: Chuong 2 Windows Form (2)

}

Bước 2: viết code cho button ghi file

private void btnGhi_Click(object sender, EventArgs e) { // tạo hộp thoại lưu tập tin SaveFileDialog dlg = new SaveFileDialog(); // chỉ lưu tập tin dạng .txt dlg.Filter = "Luu tap tin .txt|*.txt"; // hiển thị hộp thoại if (dlg.ShowDialog() == DialogResult.OK) { // lấy đường dẫn tập tin sẽ lưu string filePath = dlg.FileName; // lấy nội dung từ textbox string noiDung = txtNoiDung.Text; // mở tập tin để lưu StreamWriter writer = new StreamWriter(filePath); // ghi toàn bộ nội dung vào tập tin writer.Write(noiDung); // đóng tập tin writer.Close(); } }

Bài tập 8

Yêu cầu :

Thêm phím tắt cho chương trình máy tính cho số nguyên

F1, F2, F3, F4 tương ứng với cộng, trừ, nhân, chia

Ctrl + X để thoát

Page 12: Chuong 2 Windows Form (2)

Hướng dẫn :

Bước 1 : thay đổi thuộc tính KeyPreview của form bằng true

Cách 1 : phải chuột vào form, chọn Property, chọn thuộc tính KeyPreview bằng true

Cách 2 : trong sự kiện form load viết code : this.KeyPreview = true;

Bước 2 : viết hàm ThucHienPhepCong để khi nhấn vào button Cộng hoặc bấm phím tắt F1 sẽ

cùng gọi hàm này

private void ThucHienPhepCong() { int so1 = int.Parse(txtSo1.Text); int so2 = int.Parse(txtSo2.Text); int tong = so1 + so2; txtKetQua.Text = tong.ToString(); } private void btnCong_Click(object sender, EventArgs e) { ThucHienPhepCong(); }

Bước 3 : Viết sự kiện KeyUp của form

Phải chuột vào form chọn Property

Chọn biểu tượng sấm sét để chuyển qua danh sách sự kiện

DoubleClick vào sự kiện KeyUp để vào màn hình viết code

private void FormPhimTat_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.F1)

Page 13: Chuong 2 Windows Form (2)

{ ThucHienPhepCong(); } else if (e.KeyCode == Keys.F2) { // ... } // bấm phím ctrl + X else if (e.KeyCode == Keys.X && e.Control == true) { // thoát khỏi chương trình this.Close(); } }

Bài tập 9

Yêu cầu

Viết chương trình load danh sách các ổ đĩa có trên hệ thống lên combobox, khi chọn một ổ đĩa sẽ

hiển thị các thông tin của ổ đĩa.

Hướng dẫn

Bước 1 : Khai báo mảng toàn cục các ổ đĩa arrDrive

// lấy mảng các ổ đĩa có trong hệ thống DriveInfo[] arrDrive = DriveInfo.GetDrives();

Bước 2 : Phát sinh sự kiện form_load của form

private void Form1_Load(object sender, EventArgs e) { foreach (DriveInfo drive in arrDrive) {

Page 14: Chuong 2 Windows Form (2)

cbxDrives.Items.Add(drive.Name); } }

Bước 3 : Viết code cho sự kiện SelectedIndexChange của cbxDrives

private void cbxDrives_SelectedIndexChanged(object sender, EventArgs

e) { // lấy chỉ số trong combobox vừa chọn int index = cbxDrives.SelectedIndex; if (index != -1) { DriveInfo drive = arrDrive[index]; txtDriveName.Text = drive.VolumeLabel; txtRootDirectory.Text = drive.RootDirectory.FullName; txtTotalSize.Text = drive.TotalSize.ToString(); txtTotalFreeSpace.Text = drive.TotalFreeSpace.ToString(); } }

Phần 3. Windows form 3

Bài tập 10

Yêu cầu

Viết chương trình quản lý tập tin đơn giản :

Load danh sách các ổ đĩa có trên hệ thống vào trong comboBox, khi chọn các ổ đĩa trong

comboBox thì danh sách listView bên dưới thay đổi theo

DoubleClick hoặc bấm Enter vào 1 thư mục : mở thư mục đó

DoubleClick hoặc bấm Enter vào 1 tập tin : mở tập tin đó

Page 15: Chuong 2 Windows Form (2)

Hướng dẫn

Bước 1 : Thiết kế giao diện

Gán thuộc tính cho listView lvwDir

Thuộc tính View = Detail : để xem danh sách theo dạng nhiều cột

Thuộv tính FullRowSelect = True : để chọn toàn bộ dòng

Thêm danh sách các cột

o Vào thuộc tính Column

o Bấm Add để thêm mới 1 cột

Thuộc tính Text = “Name” : cột đầu tiên có tiêu đề là Name

Thuộc tính TextAlign : chỉnh canh trái hoặc canh phải

o Tương tự với 3 cột còn lại

Thêm icon Thư mục và File cho listView

o Tạo một control ImageList bằng cách kéo control ImageList từ toolbox vào form

o Sau đó thêm 2 icon vào trong imagelist vừa kéo trong thuộc tính Images

Page 16: Chuong 2 Windows Form (2)

o Trong thuộc tính SmallImageList của listiview sẽ chọn ImageList vừa kéo vào

Bước 2 : khai báo biến toàn cục “thư mục hiện tại”, “mảng các ổ đĩa” (tương ứng với combobox

ỗ đĩa), “mảng các phần tử” (tương ứng các item trong list view)

public partial class Form2 : Form { // thu muc hien tai DirectoryInfo curDir; // lấy mảng các ổ đĩa có trong hệ thống DriveInfo[] arrDrive = DriveInfo.GetDrives(); // ...

Bước 3 : Viết code thêm danh sách các ỗ đĩa trong combobox trong form load

private void Form2_Load(object sender, EventArgs e) { foreach (DriveInfo drive in arrDrive) { cbxDrives.Items.Add(drive.Name); } }

Bước 4 : Viết hàm OpenDirectory(DirectoryInfo dir) dùng để hiện thị danh sách tập tin và thư

mục trong thư mục dir

private void OpenDirectory(DirectoryInfo dir) { lvwDir.Items.Clear(); arrItem.Clear(); // duyệt lần lược các thư mục con có trong dir foreach (DirectoryInfo subDir in dir.GetDirectories()) { // tạo mới 1 hàng trong listView ListViewItem lvi = new ListViewItem(); // điền thông tin cho cột 1 "Name" lvi.Text = subDir.Name; // điền thông tin cho cột 2 "Size" lvi.SubItems.Add(""); // điền thông tin cho cột 3 "Type" lvi.SubItems.Add("Folder"); // điền thông tin cho cột 4 "Date modified" lvi.SubItems.Add(subDir.LastWriteTime.ToString()); // chỉ số của icon hiển thị lvi.ImageIndex = 0;

Page 17: Chuong 2 Windows Form (2)

// gán đối tượng thư mục cho thuộc tính tag lvi.Tag = subDir;

// thêm hàng mới tạo vào trong listView lvwDir.Items.Add(lvi); } // duyệt lần lược các tập tin có trong dir foreach (FileInfo file in dir.GetFiles()) { // tạo mới 1 hàng trong listView ListViewItem lvi = new ListViewItem(); lvi.Text = file.Name; lvi.SubItems.Add(file.Length.ToString()); lvi.SubItems.Add("File"); lvi.SubItems.Add(file.LastWriteTime.ToString()); lvi.ImageIndex = 1; lvi.Tag = file;

lvwDir.Items.Add(lvi);

} }

Bước 5 : Viết code cho sự kiện selectedIndexChange của combobox ổ đĩa

private void cbxDrives_SelectedIndexChanged(object sender, EventArgs

e) { // lấy chỉ số trong combobox vừa chọn int index = cbxDrives.SelectedIndex; if (index != -1) { curDir = arrDrive[index].RootDirectory; OpenDirectory(curDir); } }

Bước 6 : Viết code cho sự kiện ItemActivate của listview (khi người dùng doubleclick hay bấm

enter vào 1 item)

private void lvwDir_ItemActivate(object sender, EventArgs e) { // kiểm tra phần từ vừa chọn có phải là thư mục if (lvwDir.SelectedItems[0].Tag.GetType() == typeof(DirectoryInfo)) { curDir = (DirectoryInfo)lvwDir.SelectedItems[0].Tag; OpenDirectory(curDir); }

Page 18: Chuong 2 Windows Form (2)

else if(lvwDir.SelectedItems[0].Tag.GetType() == typeof(FileInfo)) { FileInfo file = (FileInfo)lvwDir.SelectedItems[0].Tag; System.Diagnostics.Process.Start(file.FullName); } }

Bài tập 11

Yêu cầu

Viết chương trình hiển thị nội dung tập tin dạng text. Nhập đường dẫn file, bấm view sẽ mở form

mới hiển thị nội dung

Hướng dẫn

Bước 1 : thêm form mới frmViewFile vào project

Vào menu Project → Add Windows Form

Page 19: Chuong 2 Windows Form (2)

Name : đặt tên là frmViewFile

Form này chỉ có 1 control duy nhất là textbox txtNoiDung

o có thuộc tính Multiline = true để nhập nhiều dòng

o có thuộc tính Dock = Fill để control phủ toàn bộ form

Tạo thuộc tính NoiDung cho form này để truyền dữ liệu nội dung từ form chính lên form

này

public partial class frmViewFile : Form { private string _noiDung;

public string NoiDung { get { return _noiDung; } set { _noiDung = value; } }

Trong hàm form_load hiển thị NoiDung lên textbox

private void frmViewFile_Load(object sender, EventArgs e) { txtNoiDung.Text = _noiDung; }

Trong hàm form_closed lưu NoiDung từ textbox

private void frmViewFile_FormClosed(object sender, FormClosedEventArgs

e) { _noiDung = txtNoiDung.Text; }

Bước 2 : Viết code cho sự kiện click của button View

private void btnView_Click(object sender, EventArgs e) { // kiem tra duong dan file co ton tai if (File.Exists(txtFilePath.Text) == true) { // doc toan bo noi dung tu file StreamReader reader = new StreamReader(txtFilePath.Text); string noiDung = reader.ReadToEnd(); reader.Close(); // hien thi form view file frmViewFile form = new frmViewFile(); form.NoiDung = noiDung; form.ShowDialog(); // lay lai noi dung da cap nhat tren form view file

Page 20: Chuong 2 Windows Form (2)

noiDung = form.NoiDung; } else { MessageBox.Show("Tap tin nay khong ton tai", "Thong bao"); } }

Bài tập 12

Yêu cầu

Viết chương trình copy, move, tạo mới file; folder

Hướng dẫn

Quản lý file

Copy file : truyền vào đường dẫn file nguồn và đường dẫn file đích

File.Copy("D:/temp1/test.txt", "D:/temp2/test.txt");

Move file : truyền vào đường dẫn file nguồn và đường dẫn file đích

File.Move("D:/temp1/test.txt", "D:/temp2/test.txt");

Delete file : truyền vào đường dẫn file cần xóa

File.Delete("D:/temp2/test.txt");

Quản lý folder

Tạo mới thư mục :

Directory.CreateDirectory("D:/temp1/new folder");

Move thư mục :

Directory.Move("D:/temp1", "D:/temp2/temp1");

Copy thư mục* : không hỗ trợ sẵn hàm phải viết hàm đệ qui để copy

Xóa thư mục

Page 21: Chuong 2 Windows Form (2)

Directory.Delete("D:/temp2/temp1", true);