Bonjour
je voudrez afficher une liste (aide à la saisir) dans un textBoxe multilines a la position du curseur clavier , mais j'arrive pas de le faire.
merci d'avance
Bonjour
je voudrez afficher une liste (aide à la saisir) dans un textBoxe multilines a la position du curseur clavier , mais j'arrive pas de le faire.
merci d'avance
Mais... trouver les coordonnées du curseur, ça il faudra le faire quoiqu'il arrive... facile, c'est les coordonnées du curseur
Pol63 parlait juste de comment créer ce textbox au style Intellisense.
Et les trucs dont il parle (lost focus, top most, héritage tec.) c'est pour simuler le comportement que tu cherches.
L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)
C'est peut être un début
Si la ligne cliqué est différente de la précédente alors on repositionne la listbox
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Dim Position_Cursor As Integer Dim Old_Position_Cursor As Integer Private Sub TextBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Click Position_Cursor = TextBox1.GetLineFromCharIndex(TextBox1.GetFirstCharIndexOfCurrentLine) If Old_Position_Cursor <> Position_Cursor Then listbox.Location = New Point(Cursor.Position.X,Cursor.Position.Y) End If Old_Position_Cursor = TextBox1.GetLineFromCharIndex(TextBox1.GetFirstCharIndexOfCurrentLine) End Sub
peut etre j'ai mal formulé la question,
j'ai placée un textBoxe multilines et une listBoxe masquée, mon objectif est d'afficher la liste au coordonnées du curseur clavier lorsque j'appuyé sur CTR+C
Comme te l'a informé Pol63, curseur clavier se dit Caret en anglais (ils font la distinction entre la souris et le clavier)
Petite recherche Google "MSDN get Caret Position" :
- pour un textbox :
TextBox.CaretIndex
https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx
-Pour un RichTextBox :
RichTextBox.CaretPosition
https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx
L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)
Oups, ça donne juste l'index...
Cela dit, avec cette info on peut quand même avoir la position en coordonnées en utilisant l'API User32 :
http://forums.codeguru.com/showthrea...x-mdi-app-help
L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)
Je chercher un peu, mais ce qu'il y a de sur c'est qu'en effet le code est obsolète.
Déjà
doit être remplacé par
Code : Sélectionner tout - Visualiser dans une fenêtre à part TextBox1.hwnd
Mais et surtout, la manière dont les fonction de l'API sont déclarés ne va pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part TextBox1.Handle.ToInt32
Apparemment il faut faire un Import :
Et les déclarations ressemblent à cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Imports System.Runtime.InteropServices
Et ça marche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <DllImport("user32.dll")> _ Private Shared Function GetCaretPos(ByRef lpPoint As Point) As Long End Function <DllImport("user32.dll")> _ Private Shared Function ClientToScreen(ByVal hWnd As IntPtr, ByRef lpPoint As Point) As Boolean End Function
L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)
Magnifique merci beaucoup, ça marche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Private Sub ConsultFrm_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown If e.Control And e.KeyCode = Keys.C Then 'Controle + C Dim tCaret As Point Call GetCaretPos(tCaret) 'get the Caret Position in RichTextbox Coords Call ClientToScreen(MotifTxt.Handle.ToInt32, tCaret) 'get the Coords in Screen Coords MsgBox(tCaret.X & "---" & tCaret.Y) End If End Sub
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