Bài toán:
Tôi có 1 form chính (form main), đây là form mà tôi muốn nó có độ trong suốt để không che mất nội dung của các ứng dụng khác.
Thông qua Form 2 tôi sẽ điều chỉnh độ trong suốt của form 1.
Việc chèn form, chú ý trên vb.net tên của nó không phải là userform mà là window form. Các bạn click chuột phải vô project và chọn add => window form.
Tôi sẽ khai báo một biến public trên module 1.
Giá trị khởi tạo là 0.5, do đó ở form 1, sự kiện load form tôi sẽ code như sau:
Trên form2, ngay khi người dùng thay đổi giá trị scrollbar (HScrollBar1), thì độ trong suốt của form 1 phải thay đổi theo.
Sự kiện scrollbar di chuyển sẽ code như sau:
Sự kiện form2 được load ra, tôi muốn thanh scrollbar sẽ phản ánh giá trị của độ trong suốt hiện đang được dùng (lưu ở biến public) do đó code sẽ như sau:
Trên form 2, nếu người dùng ấn OK thì biến public phải được nạp giá trị mới, do đó code như sau:
Nếu người dùng ấn hủy thì không lưu gì cả, biến public vẫn giữ nguyên giá trị ban đầu, nhưng thông qua hành động di chuyển scrollbar thì độ trong suốt của form1 đã bị thay đổi rồi, giờ phải trả nó về trạng thái cũ, do đó code như sau:
Các điểm chú ý:
Scroll bar thiết định giá trị từ 0 tới 100.
Tôi không hiểu sao ngay cả khi di chuyển con trỏ về kịch bên phải thì check giá trị của scollbar chỉ là 91.
Do đó trong đoạn code trên, để xử lý vấn đề này, tôi xử lý qua code, nếu giá trị > 90 thì thiết định ngay là 100.
Vì độ trong suốt nằm từ 0 tới 1 nên giá trị của scollbar phải chia cho 100.
Để ẩn form, cấu trúc của vb.net hơi khác với VBA :
Việc hiện form2 từ form 1, cách xử lý cũng có phần hơi rườm rà:
Tại sao cần thông qua form 2 để điều khiển độ trong suốt của form 1:
Nếu đặt scrollbar trực tiếp trên form 1. Khi điều chỉnh độ trong suốt tới gần 0 (gần như không thấy gì) thì việc điều chỉnh lại độ trong suốt sẽ gặp khó khăn do không còn thấy gì nữa.
Vì vậy, tôi thông qua form 2 (là form không bị làm mờ) để điều khiển độ làm mờ của form 1. Việc này sẽ tránh được điểm rắc rối ở trên.
Tôi có 1 form chính (form main), đây là form mà tôi muốn nó có độ trong suốt để không che mất nội dung của các ứng dụng khác.
Thông qua Form 2 tôi sẽ điều chỉnh độ trong suốt của form 1.
Việc chèn form, chú ý trên vb.net tên của nó không phải là userform mà là window form. Các bạn click chuột phải vô project và chọn add => window form.
Bạn cần đăng nhập để thấy đính kèm
Tôi sẽ khai báo một biến public trên module 1.
Giá trị khởi tạo là 0.5, do đó ở form 1, sự kiện load form tôi sẽ code như sau:
Form 1:
Me.Opacity = dotrongsuot
Sự kiện scrollbar di chuyển sẽ code như sau:
Mã:
Dim dbn As Double
If HScrollBar1.Value > 90 Then
HScrollBar1.Value = 100
End If
dbn = HScrollBar1.Value / 100
Form1.Opacity = dbn
Application.DoEvents()
Mã:
HScrollBar1.Value = dotrongsuot * 100
Mã:
If HScrollBar1.Value > 90 Then
HScrollBar1.Value = 100
End If
dotrongsuot = HScrollBar1.Value / 100
Form1.Opacity = dotrongsuot
Application.DoEvents()
Me.Dispose()
Mã:
Form1.Opacity = dotrongsuot
Application.DoEvents()
Me.Dispose()
Scroll bar thiết định giá trị từ 0 tới 100.
Bạn cần đăng nhập để thấy đính kèm
Tôi không hiểu sao ngay cả khi di chuyển con trỏ về kịch bên phải thì check giá trị của scollbar chỉ là 91.
Do đó trong đoạn code trên, để xử lý vấn đề này, tôi xử lý qua code, nếu giá trị > 90 thì thiết định ngay là 100.
Vì độ trong suốt nằm từ 0 tới 1 nên giá trị của scollbar phải chia cho 100.
Để ẩn form, cấu trúc của vb.net hơi khác với VBA :
Mã:
Me.Dispose()
Mã:
Dim f As New Form2()
f.ShowDialog(Me)
Nếu đặt scrollbar trực tiếp trên form 1. Khi điều chỉnh độ trong suốt tới gần 0 (gần như không thấy gì) thì việc điều chỉnh lại độ trong suốt sẽ gặp khó khăn do không còn thấy gì nữa.
Vì vậy, tôi thông qua form 2 (là form không bị làm mờ) để điều khiển độ làm mờ của form 1. Việc này sẽ tránh được điểm rắc rối ở trên.