romagny13
Messages postés687Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention27 août 2014
-
1 août 2006 à 09:37
romagny13
Messages postés687Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention27 août 2014
-
16 août 2006 à 23:09
Bonjour
voila je cherche a recupérer le numéro de la ligne et de la colonne en cours de saisie (et a evenement MouseDowmn) de la souris afin des les afficher dans la statusstrip de la form un peu comme le fait visual studio en fait.
je sais deja recuperer le numéro de la ligne mais jai un peu du mal a recuperer le numéro de colonne (surtout donnant la position du curseur lors du MouseDown)
voici le code qui me permet de recuperer le numero de ligne en cours :
Imports System.text
Imports
System.Runtime.InteropServices
Imports
Microsoft.VisualBasic.Strings
Public
Class
Form1
'''
<summary>
''' DECLARATIONS
'''
</summary>
'''
<remarks></remarks>
Dim
nligne_courante, nCaractere
As
Integer
#
Region
"win API"
Friend
Shared
Function
GetCurrentLineNumber(
ByVal
href
As
HandleRef)
As
Int32
Return
SendMessageW(href, EM_LINEFROMCHAR,
New
IntPtr(-1), 0).ToInt32
End
Function
Friend
Shared
Function
GetLineCharIndex(
ByVal
href
As
HandleRef,
ByVal
lineNumber
As
Int32)
As
Int32
Return
SendMessageW(href, EM_LINEINDEX,
New
IntPtr(lineNumber), 0).ToInt32
End
Function
' Private Declare Unicode Function SendMessageW Lib "user32" (ByVal hWnd As HandleRef, ByVal msg As Int32, ByVal wParam As IntPtr, ByRef lparam As ITextDocument) As IntPtr
SamirAloui
Messages postés53Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention20 mars 2008 15 août 2006 à 17:09
Bon soir les mec.
Hi: 421038 romagny13 ne pas aller tres loin voila une sollution qui n'utilise pas les APIs seulement les fonction de VB
Dim CurrLi
As
Integer
'ligne en cours
Dim CurrCol
As
Integer
'colonne en cours
Dim tmp
As
Integer
' temporairetmp = RichTextBox1.GetFirstCharIndexOfCurrentLine()
'Recuperer la position du premier caractere dans la ligne active
CurrLi = RichTextBox1.GetLineFromCharIndex(tmp) + 1 'Recuperer la position du ligne active (1ere ligne=0 c'est pourquoi en ajoutont 1)
'Recuperer la position du caret par dans les lignes
'Astuce: 1- Compter le nombre de toutes les les caractere dans les lignes precedent
' 2- trancher la position courant - le compte- Nbrligneprecedant
'Pourquoui NbrLignPrecedant: Car a chaque ligne il y'a un caractere special et invisible c'est le retour a la ligne (VbCrLf)
'Alors
Try
Dim i
As
Integer
Dim Somme
As
Integer = 0
For i = 0
To CurrLi - 2
Somme += RichTextBox1.Lines(i).Length + 1
Next i
CurrCol = RichTextBox1.SelectionStart - Somme
Catch s
As Exception
End
Try
Maintenat: Copier ce code dans les deux procedure
1-RichTextBox1_KeyUp
2-RichTextBox1_MouseUp
A bin tot
romagny13
Messages postés687Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention27 août 20143 16 août 2006 à 23:09
Nickel SamirAloui merci beaucoup
c'est vrai que j'avais penser à selectionstart pour recuperer le numero de colonne en cours mais la avec la solution que tu m'apportes je n'ai même plus aà essayer j'ai un code qui marche impec