Giáo trình Lập trình Windows forms với C# (Phần 2)

6.1. Điều khiển GroupBox

GroupBox là dạng điều khiển chứa, có thể chứa các điều khiển khác hiển thị trên

form, giúp cho việc thiết kế giao diện của form dễ nhìn và khoa học hơn. GroupBox

không hỗ trợ thanh trượt (ScrollBar). GroupBox có thể có tiêu đề hiển thị, tiêu đề này

được thiết lập trong thuộc tính Text. Nếu không muốn hiển thị tiêu đề, lập trình viên có

thể thiết lập chuỗi rỗng trong thuộc tính Text. Điều khiển GroupBox được đặt trong

nhóm Containers của cửa sổ Toolbox như hình 6.1.

Hình 6.1: Điều khiển GroupBox trong cửa sổ Toolbox

Thông thường GroupBox sử dụng để nhóm điều khiển RadioButton (xem mục

3.5.2 của chương 3).

 Một số thuộc tính thường dùng của GroupBox:

Bảng 6.1: Bảng mô tả các thuộc tính của GroupBox

Khi thiết lập giá trị thuộc tính cho GroupBox trong bảng 6.1, thì những điều

khiển như: RadioButton, TextBox, Label, nếu nằm trong GroupBox cũng sẽ có

những giá trị thuộc tính tương tự như của GroupBox.

Ví dụ 6.1: Viết chương trình định dạng chuỗi văn bản, thiết kế giao diện chương trình

như hình 6.2.

Hình 6.2: Giao diện forn định dạng chuỗi ví dụ 6.1

Yêu cầu: Khi người dùng nhập chuỗi văn bản trong TextBox thì Label “Chuỗi định

dạng” sẽ hiển thị chuỗi văn bản vừa nhập. Khi nhấp chuột chọn các Radio trong

GroupBox “Màu” và GroupBox “Kiểu hiển thị” thì chuỗi định dạng sẽ thay đổi định

dạng tương ứng với lựa chọn của người dùng.

Bước 1: Thiết kế giao diện chương trình. Kéo các điều khiển: Label, GroupBox,

RadioButton, TextBox từ cửa sổ Toolbox vào form như hình 6.3

Giáo trình Lập trình Windows forms với C# (Phần 2) trang 1

Trang 1

Giáo trình Lập trình Windows forms với C# (Phần 2) trang 2

Trang 2

Giáo trình Lập trình Windows forms với C# (Phần 2) trang 3

Trang 3

Giáo trình Lập trình Windows forms với C# (Phần 2) trang 4

Trang 4

Giáo trình Lập trình Windows forms với C# (Phần 2) trang 5

Trang 5

Giáo trình Lập trình Windows forms với C# (Phần 2) trang 6

Trang 6

Giáo trình Lập trình Windows forms với C# (Phần 2) trang 7

Trang 7

Giáo trình Lập trình Windows forms với C# (Phần 2) trang 8

Trang 8

Giáo trình Lập trình Windows forms với C# (Phần 2) trang 9

Trang 9

Giáo trình Lập trình Windows forms với C# (Phần 2) trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 129 trang xuanhieu 15503
Bạn đang xem 10 trang mẫu của tài liệu "Giáo trình Lập trình Windows forms với C# (Phần 2)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Giáo trình Lập trình Windows forms với C# (Phần 2)

Giáo trình Lập trình Windows forms với C# (Phần 2)
er, EventArgs e) 
 { 
 lblHienThi.Text = time.ToString(); 
 time += 1; 
 if (time == 60) 
 SendKeys.Send("{Enter}"); 
 } 
10.4. Lớp PowerStatus 
 Lớp PowerStatus chứa các thuộc tính cung cấp thông tin về tình trạng nguồn điện 
đang sử dụng của máy tính. Điểm đặc biệt là lớp PowerStatus không có phương thức 
khởi tạo, do đó lập trình viên có thể tạo đối tượng lớp PowerStatus và sử dụng thông 
qua thuộc tính PowerStatus của lớp SystemInformation như sau: 
 PowerStatus pwts; 
 pwts = SystemInformation.PowerStatus; 
 string power = ""; 
 power = pwts.BatteryChargeStatus.ToString(); 
 power +=" " + pwts.BatteryFullLifetime.ToString(); 
 power += " " + pwts.BatteryLifePercent.ToString(); 
 power += " " + pwts.PowerLineStatus.ToString();287 
Ví dụ 10.4: Viết chương trình hiển thị tình trạng của pin có giao diện như hình 10.7. 
 Hình 10.7: Giao diện hiển thị thông tin tình trạng pin 
Hướng dẫn: 
 Bước 1: Thiết kế form có giao diện ban đầu như hình 10.8: Thêm điều khiển 
 Label từ Toolbox vào form. 
 Hình 10.8: Giao diện ban đầu form hiển thị thông tin tình trạng pin 
 Bước 2: Thiết lập giá trị thuộc tính trong cửa sở Properties. 
 - Form1: 
 Thuộc tính Text: “PowerStatus” 
 label1: 
 Thuộc tính Name: lblHienthi 
 Bước 3: Viết mã lệnh cho chương trình 
 - Sự kiện Load của form: 
 288
 private void Form1_Load(object sender, EventArgs e) 
 { 
 PowerStatus pwts; 
 pwts = SystemInformation.PowerStatus; 
 string power = "BatteryChargeStatus: "; 
 power += pwts.BatteryChargeStatus.ToString(); 
 power += "\nBatteryFullLifetime: " + 
 pwts.BatteryFullLifetime.ToString(); 
 power += "\nBatteryLifePercent: " + 
 pwts.BatteryLifePercent.ToString(); 
 power += "\nBatteryLifeRemaining: " + 
 pwts.BatteryLifeRemaining.ToString(); 
 power += "\nPowerLineStatus: " + 
 pwts.PowerLineStatus.ToString(); 
 lblHienThi.Text = power; 
 } 
10.5. Lớp Application 
 Lớp Application chứa các thuộc tính và phương thức liên quan đến ứng dụng 
như: khởi động ứng dụng, đóng ứng dụng hoặc các thông tin về ứng dụng. 
 Lưu ý lớp Application là dạng lớp cô lập (Sealed) do đó không cho phép các lớp 
khác thừa kế. 
  Các thuộc tính thường dùng của lớp Application: 
 Bảng 10.8: Bảng mô tả các thuộc tính của lớp Application 
 Thuộc tính Mô tả 
 CommonAppDataPath Trả về đường dẫn, đường dẫn này lưu trữ nhưng tập tin để 
 chia sẻ cho người dùng khác sử dụng. 
 CompanyName Trả về tên của công ty được khai báo trong thuộc 
 AssemblyCompany của tập tin AssemblyInfo.cs 
 CurrentCulture Cho phép thiết lập hoặc lấy các thông tin định dạng thời 
 gian, ngày tháng, ngôn ngữ,  hiện đang sử dụng 
 CurrentInputLanguage Cho phép thiết lập hoặc lấy thông tin về ngôn ngữ đang 
 sử dụng 
 ExecutablePath Trả về đường dẫn của tập tin thực thi (tập tin có đuôi 
 .exe). 
 Ví dụ: 
 C:\Users\PC_PHUC\Desktop\DuAnDauTien\DuAnDauTi
 en\bin\Debug\DuAnDauTien.exe 
 ProductName Trả về tên của ứng dụng được khai báo trong trong thuộc 
 289
 tính AssemblyProduct của tập tin AssemblyInfo.cs 
 ProductVersion Trả về phiên bản của ứng dụng được khai báo trong trong 
 thuộc tính AssemblyVersion của tập tin AssemblyInfo.cs 
 StartupPath Trả về đường dẫn chứa tập tin thực thi, đường dẫn này 
 không chứa tên của tập tin thực thi. 
 Ví dụ: 
 C:\Users\PC_PHUC\Desktop\DuAnDauTien\DuAnDauTi
 en\bin\Debug 
 UserAppDataPath Tương tự thuộc tính CommonAppDataPath, 
 UserAppDataPath Trả về đường dẫn, đường dẫn này lưu 
 trữ nhưng tập tin để chia sẻ cho người dùng khác sử dụng. 
  Các phương thức thường dùng của lớp Application: 
 Bảng 10.9: Bảng mô tả các phương thức của lớp Application 
 Phương thức Mô tả 
 Exit() Giúp đóng ứng dụng. 
 ExitThread() Giúp đóng tiến trình. Một ứng dụng có thể có nhiều tiến 
 trình chạy song song, phương thức ExitThread() giúp 
 đóng tiến trình hiện tại. 
 DoEvents() Có chức năng như phương thức Flush cửa lớp 
 SendKeys. có chức năng bỏ qua những thực thi đang 
 chờ để thực thi một công việc khác. Cụ thể nếu có một 
 tiến trình đang chạy và muốn ứng dụng ngay lập tức 
 thực thi một công việc khác mà không phải chờ tiến 
 trình làm việc xong thì cần gọi phương thức DoEvents(). 
 Restart() Phương thức Restart() thực hiện hai công việc là đóng 
 ứng dụng lại sau đó thì sẽ khởi động ứng dụng 
 Run() Phương thức Run() giúp khởi động một đối tượng trong 
 ứng dụng. 
10.6. Lớp Clipboard 
 Lớp Clipboard cung cấp cho người một vùng nhớ tạm để lưu trữ dữ liệu, đồng 
thời cũng hỗ trợ các phương thức cho phép thực hiện công việc sao chép dữ liệu từ nơi 
này và dán dữ liệu đến một nơi khác thông qua vùng nhớ tạm mà Clipboard cung cấp. 
 290
  Các phương thức thường dùng của lớp Clipboard: 
 Bảng 10.10: Bảng mô tả các phương thức của lớp Clipboard 
 Phương thức Mô tả 
 Clear() Cho phép xóa dữ liệu đang chứa trong Clipboard 
 SetText() Lưu vào trong Clipboard 
 GetText() Trả về chuỗi lưu trữ trong Clipboard 
 ContraintText() Trả về một trong hai giá trị True hoặc False. 
 - Nếu là True: Trong Clipboard có nội dung 
 - Nếu là False: Trong Clipboard không chứa một 
 chuỗi nào cả. 
 SetImage() Lưu trữ hình ảnh vào Clipboard 
 GetImage() Trả về hình đang lưu trữ trong Clipboart 
 ContraintsImage() Trả về một trong hai giá trị True hoặc False. 
 - Nếu là True: Trong Clipboard có chứa hình ảnh 
 - Nếu là False: Trong Clipboard không chứa hình 
 ảnh. 
 SetData() Lưu trữ đối tượng vào Clipboard 
 GetData() Trả về đối tượng đang lưu trữ trong Clipboard 
 ContainsData() Trả về một trong hai giá trị True hoặc False. 
 - Nếu là True: Trong Clipboard có chứa đối tượng 
 - Nếu là False: Trong Clipboard không chứa đối 
 tượng 
Ví dụ 10.5: Viết chương trình thực hiện công việc sao chép văn bản từ hai TextBox. 
Chương trình gồm các điều khiển: TextBox, Label, Button, OpenFileDialog. Giao diện 
chương trình như hình 10.9. 
 Hình 10.9: Giao diện form sao chép văn bản 
 291
Yêu cầu: 
 - Browse: Giúp chọn tập tin .txt trong hệ thống và hiển thị nội dung tập tin trên 
 TextBox txt1. 
 - SetText: Sao chép nội dung văn bản trong TextBox txt1 vào Clipboard 
 - GetText: Chép nội dung văn bản trong Clipboard vào TextBox txt2 
 - Clear: Xóa dữ liệu lưu trong Clipboard 
 - Exit: Đóng chương trình. 
Hướng dẫn: 
 Bước 1: Thiết kế giao diện ban đầu: Thêm các điều khiển Label, TextBox, 
 Button, OpenFileDialog từ cửa sổ Toolbox vào form như hình 10.10. 
 TextBox1 TextBox2 
 Hình 10.10: Giao diện ban đầu form sao chép văn bản 
 Bước 2: Thiết lập giá trị thuộc tính cho điều khiển 
 - Form1: 
 Thuộc tính Text: “Clipboard” 
 Thuộc tính Size: 580, 299 
 - label1: 
 Thuộc tính Text: “Copy and paste Text” 
 - label2: 
 Thuộc tính Text: “Text 1:” 
 - label3: 
 Thuộc tính Text: “Text 2: 
 - TextBox1: 
 Thuộc tính Multiline: True 
 292
 Thuộc tính Name: txt1 
 Thuộc tính Size: 262, 126 
- TextBox2: 
 Thuộc tính Multiline: True 
 Thuộc tính Name: txt2 
 Thuộc tính Size: 262, 126 
- button1: 
 Thuộc tính Text: “Browse” 
 Thuộc tính Name: browse 
- button2: 
 Thuộc tính Text: “SetText” 
 Thuộc tính Name: settext 
- button3: 
 Thuộc tính Text: “GetText” 
 Thuộc tính Name: gettext 
- button4: 
 Thuộc tính Text: “Clear” 
 Thuộc tính Name: clear 
- button5: 
 Thuộc tính Text: “Exit” 
 Thuộc tính Name: exit 
- openFileDialog1: 
 Thuộc tính Filter: “File Text|*.txt” 
Bước 3: Viết mã lệnh cho các điều khiển 
 - Sự kiện Click của Button SetText: 
 private void settext_Click(object sender, EventArgs e) 
 { 
 Clipboard.SetText(txt1.Text); 
 } 
 - Sự kiện Click của Button Browse: 
 private void browse_Click(object sender, EventArgs e) 
 { 
 if (openFileDialog1.ShowDialog() == DialogResult.OK) 
 { 
 string tentaptin = openFileDialog1.FileName; 
 StreamReader rd = new StreamReader(tentaptin); 
 txt1.Text = rd.ReadToEnd(); 
 rd.Close(); 
 } 
 } 
 293
 - Sự kiện Click của Button GetText: 
 private void gettext_Click(object sender, EventArgs e) 
 { 
 txt2.Text = Clipboard.GetText(); 
 } 
 - Sự kiện Click của Button Clear: 
 private void clear_Click(object sender, EventArgs e) 
 { 
 Clipboard.Clear(); 
 } 
 - Sự kiện Click của Button Exit: 
 private void exit_Click(object sender, EventArgs e) 
 { 
 Application.Exit(); 
 } 
10.7. Lớp Cursors 
 Lớp Cursors cung cấp tâp các con trỏ có hình dạng khác nhau sử dụng trong ứng 
dụng Windows Foms như bảng 10.10. Thông thường, khi ứng dụng trong những tình 
trạng khác nhau thì lập trình trình viên sẽ thay đổi trạng thái của con trỏ cho phù hợp 
để người dùng dễ nhận biết. 
 Bảng 10.11: Bảng mô tả các thuộc tính thường dùng của lớp Clipboard 
 Thuộc tính lớp Cursors Mô tả 
 Cursors.AppStarting 
 Cursors.Default 
 Cursors.No 
 Cursors.SizeAll 
 Cursors.SizeNESW 
 Cursors.SizeNS 
 Cursors.SizeNWSE 
 Cursors.SizeWE 
 Cursors.WaitCursor 
 294
 Cursors.Hand 
 Cursors.Help 
 Cursors.NoMove2D 
 Cursors.NoMoveHoriz 
 Cursors.NoMoveVert 
 Cursors.PanEast 
 Cursors.PanNE 
 Cursors.PanNorth 
 Cursors.PanNW 
 Cursors.PanSE 
 Cursors.PanSouth 
Ví dụ 10.6: Trên form sao chép văn bản hình 10. 9. Thiết lập thuộc tính Cursor sao cho 
khi người dùng rê chuột vào TextBox1 và TextBox2 thì con trỏ sẽ hiển thị ở dạng No 
 .Hướng dẫn: 
 - Viết mã lệnh cho sự khiện MouseMove của TextBox1 như sau: 
 private void txt1_MouseMove(object sender, MouseEventArgs e) 
 { 
 Cursor.Current = Cursors.No; 
 } 
 - Viết mã lệnh cho sự khiện MouseMove của TextBox2 như sau: 
 private void txt2_MouseMove(object sender, MouseEventArgs e) 
 { 
 Cursor.Current = Cursors.No; 
 } 
 295
 CHƯƠNG 11: BÀI TẬP TỔNG HỢP 
Câu 1: 
Viết chương trình trắc nghiệm giúp học tiếng anh như sau: 
- Khi khởi động chương trình sẽ hiển thị Form “Đăng nhập” như hình 11.1 
 Hình 11.1: Form đăng nhập 
- Nhấn Button “Đăng ký” để đăng ký một tài khoản mới đăng nhập vào chương 
 trình trắc nghiệm. Form “Đăng ký” như hình 11.2. 
 Hình 11.2: Form đăng ký 
 o Nếu người dùng đăng ký tên đăng nhập sai thi sẽ hiện ErrorProvide “Tên đăng 
 nhập đã có”. 
 o Nhấn Button “Đăng ký” để hoàn tất việc đăng ký tài khoản, khi đó tên đăng ký 
 sẽ được lưu trong tập tin có tên TaiKhoan.txt để lưu trữ. 
- Tại form “Đăng nhập” như hình 11.1, nếu người dùng đăng nhập với tài khoản 
 admin và mật khẩu tài khoản là admin thì sẽ hiển thị form “Tạo câu hỏi trắc 
 nghiệm” như hình 11.3. 
 296
 Hình 11.3: Giao diện form tạo câu hỏi 
 o Người dùng có thể gõ nội dung câu hỏi và nội dung câu trả lời, đồng thời chọn 
 RadioButton tương ứng với đáp án đúng. 
 o Nhấn Button “Thêm” để thêm câu hỏi vào tập tin có tên Cauhoi.txt. 
- Tại form “Đăng nhập” như hình 11.1, nếu người dùng đăng nhập với tài khoản 
 khác admin và tồn tại trong tập tin Taikhoan.txt thì sẽ hiển thị form “Chọn số câu 
 hỏi trắc nghiệm” như hình 11.4. Nếu tài khoản đang nhập không có trong 
 Takhoan.txt thì hiện thông báo “Bạn đăng nhập chưa đúng tài khoan”. 
 Hình 11.4: Giao diện form lựa chọn số câu hỏi trắc nghiệm và thời gian 
 làm bài 
 o Khi người dùng đã chọn xong số câu hỏi trắc nghiệm và thời gian làm bài thì 
 nhấn Enter sẽ hiển thị được form làm bài trắc nghiệm như hình 11.5 
 297
 Hình 11.5: Giao diện form làm bài trắc nghiệm tiếng anh 
o Bên tay trái giao diện 11.5 sẽ hiển thị các Button, số lượng Button tương ứng 
 với số lượng câu hỏi trắc nghiệm đã chọn. Khi nhấn vào một Button bất kỳ thì 
 sẽ hiển thị lên nội dung câu hỏi, câu hỏi này được lấy từ tập tin Cauhoi.txt. 
o Trên giao diện làm bài có thanh ProgressBar sử dụng để mô tả thời gian làm 
 bài mà người dùng chọn. Nếu hết thời gian sẽ tự động nộp bài. 
o Người dùng có thể nộp bài trước khi thời gian kết thúc bằng cách nhấn Button 
 “Nộp Bài”. Khi đó sẽ hiển thị giao diện như hình 11.6 để cho biết kết quả làm 
 bài của người dùng. 
 Hình 11.6: Kết quả làm bài của người dùng 
 298
Câu 2: Viết chương trình trò chơi tìm số như hình 11.7. 
 Thời gian phải hoàn thành 
 số cần tìm 
 tạm dừng 
 Thoát 
 Người chơi phải tìm số cần 
 tìm trong danh sách các số 
 Hình 11.7: Giao diện trò chơi tìm số 
 - Trong trò chơi tìm số: 
 o Chọn chế độ chơi: 
 . Chơi mặc định: khi đó chương trình sẽ hiển thị 100 số ở vị trí 
 ngẫu nhiên bất kỳ. Khi đó người chơi sẽ phải tìm kiếm số cần tìm 
 trong danh sách các số phát sinh ở các vị trí ngẫu nhiên đó. Khi 
 tìm được người chơi sẽ nhấn vào số đó, số đó sẽ lập tức bị chuyển 
 sang chế độ đã được chọn (nghĩa là không còn nhấn được nữa). 
 Thời gian chơi ở chế độ mặc định là 10 phút, nếu hết 10 phút mà 
 không tìm được tất cả 100 số thì người chơi thua cuộc. 
 . Chế độ tự tạo: người dùng sẽ chọn số chữ số muốn tìm, số lượng 
 số trên một hàng và thời gian phải hoàn thành việc tìm kiếm. Giao 
 diện như hình 11.8. 
 299
 Hình 11.8: Giao diện trò chơi chế độ tự chọn 
o Chọn số người chơi: Nếu chọn hai người chơi thì sẽ hiển thị form như 
 hình 11.9 để 2 người chơi nhập tên vào. 
 Hình 11.9: Nhập tên của hai người chơi 
 . Tuần tự người chơi thừ nhất sẽ tìm số trước, thời gian để tìm ra 
 một số là 5 giây, nếu hết 5 giây mà người chơi thứ nhất chưa tìm 
 ra sẽ chuyển lượt cho người chơi thứ hai. 
 . Với mỗi lần tìm được số thì điểm số của người chơi sẽ tăng lên 1 
 như hình 11.10 
 300
 Điểm số hai 
 người chơi 
 Hình 11.10: Chương trình tìm số hai người chơi 
Câu 3: Viết chương trình trò chơi 1 + 1 = 2 có giao diện như hình 11.11. 
 lblKQ 
 lblSoMot lblSoHai 
 btnDung btnSai 
 ProgressBar1 lblKetQua 
 Hình 11.11: Giao diện trò chơi 1+1 = 2 
Yêu cầu: 
 301
- Chương trình sẽ phát sinh ngẫu nhiên các số nguyên trong Label: lblSoMot, 
 lblSoHai, lblKQ. 
- Người chơi sẽ xem kết quả phát sinh ở biểu thức và chọn biểu thức đúng hay 
 sai. 
 o Nếu đúng thì dùng chuột chọn nút “Đúng” trên giao diện chương trình 
 hoặc nhấn nút “Left Arrow” trên bàn phím. 
 o Nếu sai thì dùng chuột chọn nút “Sai” trên giao diện chương trình hoặc 
 nhấn nút “Right Arrow” trên bàn phím. 
- Mỗi lần chọn đúng thì sẽ được cộng một điểm vào lblKetQua và tiếp tục phát 
 sinh ngẫu nhiên 1 biểu thức mới. Nếu chọn sai sẽ bắt đầu chơi lại trò chơi. 
- Thời gian để tính toán và chọn đúng hay sai một biểu thức là 4 giây, được thể 
 hiện ở thanh ProgressBar. 
 302
 TÀI LIỆU THAM KHẢO 
[1] Phạm Hữu Khang , Lập trình Windows Forms, tập 2, NXB Lao động và Xã hội, 
2008. 
[2] Phương Lan (chủ biên), Hoàng Đức Hải, Lập trình Windows với C#.NET, NXB 
Lao động và Xã hội, 2002. 
[3] Mathew A. Stoecker, Steve Stein (2009) - EXAM 70-505 Windows Forms 
Application Development - Training Kit, Microsoft Press, 2009. 
[4] 
lam-viec-voi-may-in-pdf.htm?page=6 
[5]  
[6]
ki%E1%BB%83u/ 
[7]  
[8]  
[9]  
[10]
csharp-co-y-nghia-gi.cpp 
[11]  
[12]  
[13]  
[14]  
[15]  
[16]  
[17]  
[18]  
[19]  
[20]
xay-dung-menu.htm 
[21]
c.14869.html 
[22]  
 303
[23]  
[24]  
[25]  
[26]  
[27]  
[28]  
[29]  
[30]  
[31]  
[32]  
[33]  
[34]  
[35]  
[36]  
[37]
trong-c-using-listview-control-c 
[38]
423.html 
[39]
Edition 
 304

File đính kèm:

  • pdfgiao_trinh_lap_trinh_windows_forms_voi_c_phan_2.pdf