DavidWhitewater
Messages postés81Date d'inscriptionlundi 10 avril 2006StatutMembreDernière intervention 1 janvier 2010 13 oct. 2006 à 21:11
Hum, un peu compliqué, non ?
En faisant un SendKeys c'est plus simple.
DataGridView1.Focus() ' Donne le focus au DataGridView
DataGridView1.CurrentCell = DataGridView1.Item(0, 0) ' Sélectionne la cellule contenant le ComboBox
SendKeys.Send("{F4}") ' Déroule la ComboBox
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 13 oct. 2006 à 16:31
Salut
Bon je vasi essayé de dépanner. Mais ce code n'est pas correct, car j'ai mis des constantes pour déplacer la souris, ne comprends pas pourquoi, surtout pourquoi le Y n'est pas correct. Normalement à 0 il devrait être quasi correct si quelqu'un connait pour je suis preneur.
1--> Un module de classe ou une classe
Dont le contenu resemble à cela.
Option Strict On
Option Explicit On
Module SourisEvents
' Capture les coordonnées de la souris
' Déplace la souris à un coordonnées donné
'on déclare les constantes
Public Const MOUSEEVENTF_ABSOLUTE As Long = &H8000
Public Const MOUSEEVENTF_LEFTDOWN As Long = &H2
Public Const MOUSEEVENTF_LEFTUP As Long = &H4
Public Const MOUSEEVENTF_MIDDLEDOWN As Long = &H20
Public Const MOUSEEVENTF_MIDDLEUP As Long = &H40
Public Const MOUSEEVENTF_MOVE As Long = &H1
Public Const MOUSEEVENTF_RIGHTDOWN As Long = &H8
Public Const MOUSEEVENTF_RIGHTUP As Long = &H10
Public Const MOUSEEVENTF_WHEEL As Long = &H80
Public Const MOUSEEVENTF_XDOWN As Long = &H100
Public Const MOUSEEVENTF_XUP As Long = &H200
Public Const WHEEL_DELTA As Long = 120
Public Const XBUTTON1 As Long = &H1
Public Const XBUTTON2 As Long = &H2
Public Structure PointAPI
Dim X As Integer
Dim Y As Integer
End Structure
Declare Function ClientToScreen Lib "user32" (ByVal hwnd As Long, ByVal lpPoint As PointAPI) As Long
Public Declare Function GetCursorPos Lib "user32" (ByVal lpPoint As PointAPI) As Long
Public Declare Function SetCursorPos Lib "user32.dll" (ByVal X As Int32, ByVal Y As Int32) As Boolean
Public Declare Sub mouse_event Lib "user32.dll" (ByVal dwFlags As Int32, ByVal dx As Int32, ByVal dy As Int32, ByVal cButtons As Int32, ByVal dwExtraInfo As Int32)
' Capture des touches
Public Declare Function GetKeyState Lib "User32" (ByVal nVirtKey As Integer) As Short
End Module
et sur ta form un button et un combobox
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Apres à toi de sauvegarder la position de la souris pour la restaurer apres
avec Cursor.Position.Y
Pour eviter les api
tu peux utiliser aussi
Cursor.Position = New Point(Me.Left + ComboBox1.Left + ComboBox1.Width - 10, Me.Top + ComboBox1.Top + 40) a la place de SetCursorPos
--> -10 pour ce positionnner sur la cache pour dérouler
--> +40 la je ne vois pas (d'ou la question si un pro api windows se promene)
Attention
il faut des int32 dans les declaration avec des long, ca ne fonctionne pas correctement pour le setposition il est à 0 pour le Y (avis au pro des API)
Voila
Vous n’avez pas trouvé la réponse que vous recherchez ?