[ad_1]
J’ai écrit la gestion de la boîte de contrôle de code pour Form1 dans VB.Net en utilisant les événements de survol et de sortie de la souris, mais cela ne fonctionne pas. Quelqu’un peut-il dire quelle est l’erreur ?
Ce que j’ai essayé :
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
Solution 1
Pour moi, ce code fonctionne bien.
Je suppose que vous avez également plusieurs contrôles sur votre formulaire. Si la souris survole l’un d’entre eux, elle quitte le formulaire.
Si vous souhaitez qu’ils rendent également votre Controlbox visible, vous devez également ajouter chaque événement de survol de ces contrôles à la méthode Form1_MouseHover.
Peut-être devriez-vous également regarder si Form1_MouseLeave détecte réellement le Leave-Event.
Je vous suggère de créer une méthode qui “sait” que la souris est sur le formulaire ou l’un de leurs contrôles…
Voici un exemple de code simple qui fonctionne avec un Timer appartenant au 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
J’ai donné au minuteur un petit intervalle (100 ms) – la seule chose que vous devez savoir est que l’en-tête du formulaire et les bordures n’appartiennent pas à la définition de taille du formulaire. Leur taille dépend du FormBorderStyle sélectionné. Avec cela, il faut calculer aussi…
[ad_2]
コメント