CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 220

220
Chương 6: Windows Form

Còn một cách khác để tạo form không thể di chuyển được và có kiểu đường viền giống điều
kiểm. Trước tiên, thiết lập các thuộc tính

ControlBox

,

MinimizeBox

, và

MaximizeBox

của form

false

. Kế tiếp, thiết lập thuộc tính

Text

là chuỗi rỗng. Khi đó, form sẽ có đường viền nổi

màu xám hoặc đường kẻ màu đen (tùy thuộc vào tùy chọn

FormBorderStyle

mà bạn sử dụng),

tương tự như

Button

.

15.

15.

Làm cho form không đ

ng vi n có th di chuy n đ

c

ườ

ể ượ

Làm cho form không đ

ng vi n có th di chuy n đ

c

ườ

ể ượ

Bạn muốn tạo một form không có đường viền nhưng vẫn có thể di chuyển được.
Điều này có thể gặp trong trường hợp bạn cần tạo một cửa sổ tùy biến có hình
dáng “độc nhất vô nhị” (ví dụ, các ứng dụng game hoặc media
player).

Tạo một điều kiểm đáp ứng cho các sự kiện

MouseDown

,

MouseUp

, và

MouseMove

; và

viết mã để di chuyển form.

Người dùng thường sử dụng thanh tiêu đề để di chuyển form. Tuy nhiên, form không có
đường viền cũng không có thanh tiêu đề. Bạn có thể bù vào thiếu hụt này bằng cách thêm một
điều kiểm vào form để phục vụ cùng mục đích. Ví dụ, form trong hình 6.10 chứa một

Label

hỗ trợ việc kéo rê. Người dùng có thể nhắp vào

Label

này, và rồi kéo rê form đến một vị trí

khác trên màn hình trong lúc giữ chuột. Khi người dùng di chuyển chuột, form tự động được
di chuyển tương ứng (form được “gắn” với con trỏ chuột).

Hình 6.10 Form không có đường viền nhưng vẫn có thể di chuyển được

Để hiện thực giải pháp này, bạn cần thực hiện các bước sau:

1. Tạo một biến cờ mức-form dùng để theo vết form (form hiện có được kéo rê hay

không).

2. Khi người dùng nhắp vào

Label

, cờ sẽ được thiết lập để cho biết form đang ở chế độ

kéo rê. Cùng lúc này, vị trí hiện thời của chuột được ghi lại. Bạn cần thêm logic này
vào phương thức thụ lý sự kiện

Label.MouseDown

.

3. Khi người dùng di chuyển chuột trên

Label

, form được di chuyển tương ứng để vị trí

của chuột trên

Label

vẫn không thay đổi. Bạn cần thêm logic này vào phương thức thụ

lý sự kiện

Label.MouseMove

.

4. Khi người dùng thả chuột, chế độ kéo rê được chuyển thành off. Bạn cần thêm logic

này vào phương thức thụ lý sự kiện

Label.MouseUp

.

Dưới đây là phần mã hoàn chỉnh cho form:

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.