[ad_1]
Saya menulis penanganan kotak kontrol kode untuk Form1 di VB.Net menggunakan acara mouse hover dan cuti mouse, tetapi tidak berfungsi. Adakah yang bisa memberi tahu apa kesalahannya?
Apa yang saya coba:
Private Sub Form1_MouseLeave(sender As Object, e As EventArgs) Handles MyBase.MouseLeave Me.ControlBox = False End Sub Private Sub Form1_MouseHover(sender As Object, e As EventArgs) Handles MyBase.MouseHover Me.ControlBox = True End Sub
Solusi 1
Bagi saya kode ini berfungsi dengan baik.
Saya kira Anda juga memiliki beberapa Kontrol pada Formulir Anda. Jika Mouse mengarahkan kursor ke salah satunya, ia akan meninggalkan Formulir.
Jika Anda ingin mereka juga membuat Kotak Kontrol Anda terlihat, Anda harus menambahkan setiap Acara Hover dari Kontrol ini juga ke Metode Form1_MouseHover.
Mungkin Anda juga harus melihat apakah Form1_MouseLeave benar-benar mendeteksi Acara Keluar.
Saya menyarankan Anda membuat metode yang “mengetahui” bahwa Mouse berada di atas Formulir atau salah satu kontrolnya …
Berikut adalah contoh kode yang mudah dibuat yang bekerja dengan Timer milik Form :
Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick Dim p As Point = PointToClient(MousePosition) If (p.X >= 0) And (p.X < Width) And (p.Y >= 0) And (p.Y < Height) Then CheckBox1.Checked = True Else CheckBox1.Checked = False End Sub
Saya memberi Timer Interval kecil (100 ms) – satu-satunya hal yang harus Anda ketahui adalah bahwa Form-Header dan Borders tidak termasuk dalam Definisi Ukuran dari Formulir. Ukurannya tergantung pada FormBorderStyle yang dipilih. Dengan ini Anda harus menghitung juga …
dan satu lagi:
Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick Dim p As Point = MousePosition Dim r As Rectangle = Me.ClientRectangle r.X += Location.X r.Y += Location.Y If (p.X >= r.Left) And (p.X <= r.Right) And (p.Y >= r.Top) And (p.Y <= r.Bottom) Then CheckBox1.Checked = True Else CheckBox1.Checked = False End Sub
[ad_2]
コメント