bonjour
je veux savoir si je peux capturer l'appui sur la touche "entrée" dans une des cellule du datagrid
si un evnement existe ou dois je personliser cet evenement
merci d'avance
bonjour
je veux savoir si je peux capturer l'appui sur la touche "entrée" dans une des cellule du datagrid
si un evnement existe ou dois je personliser cet evenement
merci d'avance
Pourquoi pas tout simplement l'evenement keyPress du Datagrid :
car cela est impossible.
la touche entrée ne peut etre capturée par cet évenement.
Pourquoi cela :
C'est assez bizarre que cette touche ne soit pas interceptée....
il faut créer une nouvelle classe qui hérite du DataGrid et redéfinir la fonction ProcessCmdKey
mais le problème c que la classe qui herite de ce composant ne s'affiche pas , je croit que je n'ai pas défini toute les fonctions
Jette un oeil ici:
http://www.dotnet247.com/247reference/msgs/50/250024.aspx
ça ne m'aide pas trop
tu n'aura pas un exemple ou on crée une nouvelle classe qui herite de la classe DataGrid
je veux savoir quelles fonctions il faut redéfinir
Hum.. J'avoue que non, j'ai rien de cela sous la main, désolé...
Mais jette un oeil sur Google
Morpheus te met sur la bonne voie en te suggerant la capture du KeyPress du DataGridEnvoyé par nkonito
Le principe c'est qu'une fois que l'evènement est declenché tu as besoin de savoir le DataGrid.CurrentCell dont tu pourras déduire les Propriétés DataGridCell.ColumnNumber et DataGridCell.RowNumber
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private Sub datagrid1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles datagrid1.KeyPress If (e.KeyChar = ChrW(Keys.Enter)) Then ' ici le code du traitement de la cellule courante End If End Sub
salut naguib
je dois dire que j'ai fait ce que morpheus m' proposé avant qu'il me le propose mais ça n'avait pas marché.
j'ai reglé le problème en créant une classe qui hérite de la classe datagrid et j'ai redéfinit la méthode "ProcessCmdKey" et ça a marché.
je pense que le problème du KeyPress est qu'il ne peut pas intercepter les touches de commande (et la touche "entrée" en fait partie).
salut et merci à vous
Si tu pouvais nous faire partager cette classe, cela pourrait servir à d'autres
voici le code de cette classe
Public Class DataGridPerso
Inherits System.Windows.Forms.DataGrid
#Region " Code généré par le Concepteur de composants "
Public Sub New(ByVal Container As System.ComponentModel.IContainer)
MyClass.New()
'Requis pour la prise en charge du Concepteur de composition de classes Windows.Forms
Container.Add(Me)
End Sub
Public Sub New()
MyBase.New()
'Cet appel est requis par le Concepteur de composants.
InitializeComponent()
'Ajoutez une initialisation quelconque après l'appel InitializeComponent()
End Sub
'La méthode substituée Dispose du composant pour nettoyer la liste des composants.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Requis par le Concepteur de composants
Private components As System.ComponentModel.IContainer
'REMARQUE*: la procédure suivante est requise par le Concepteur de composants
'Elle peut être modifiée à l'aide du Concepteur de composants.
'Ne la modifiez pas en utilisant l'éditeur de code.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
components = New System.ComponentModel.Container
End Sub
#End Region
'Cette fonction permet de capturer l'appui sur la touche entrée
Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
'Si la touche "entée" est enfoncée
If msg.WParam.ToInt32() = CInt(Keys.Enter) Then
'Faire le traitement spécifique
Return True
End If
Return MyBase.ProcessCmdKey(msg, keyData)
End Function
End Class
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager