Récupérer la ligne courante

cs_keisuke Messages postés 60 Date d'inscription vendredi 16 juillet 2004 Statut Membre Dernière intervention 14 janvier 2009 - 31 mars 2006 à 22:42
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 2 avril 2006 à 18:14
Salut a tous,

Je voudrais, faire une chose dont j'ai déja recherché sur le site, s'il y avait des solutions, mais comme je suis débutant, j'aimerais, que l'on me piste, ou que l'on m'aide.
alors, est-ce que quelqu'un sait comment récupérer la ligne courante dans une textbox ? car j'ai trouvé sur le site pour une richtextbox, mais c'est pour une textbox, que je voudrais.
alors, merci d'avance

@+

7 réponses

hlayachi Messages postés 62 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 24 avril 2006
31 mars 2006 à 23:54
bonjour
il y a la propriété Text, c'est ici que ce trouve ta ligne
mais à mes connaissance, un textBox n'a qu'une seule ligne.
0
cs_keisuke Messages postés 60 Date d'inscription vendredi 16 juillet 2004 Statut Membre Dernière intervention 14 janvier 2009
31 mars 2006 à 23:59
oui, mais j'ai oublié de préciser, que j'uilisais, la textbox en multiligne.
0
hlayachi Messages postés 62 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 24 avril 2006
1 avril 2006 à 01:04
est ce que tu peux préciser encore?
moi j'ai cheché dans toutes les propriétés de Text mais je n'ai pas trouvé. je propose que tu utilise un listBox au lieu de textBox
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
1 avril 2006 à 05:04
Salut,

class MyTextBox : TextBox
{
[ System.Runtime.InteropServices.DllImport( "User32.dll" ) ]
private static extern IntPtr SendMessage( IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam );


private const int EM_LINEFROMCHAR = 0x00C9;


// ATTENTION Index de base 0, donc ligne1 0, ligne2 1 ect..
// Retourne la ligne qui contient le caret ( le curseur du clavier ).
// ou la ligne qui contient la séléction.
public int GetLineFromCaret( )
{
return ( int )SendMessage( this.Handle, EM_LINEFROMCHAR, ( IntPtr )( -1 ), IntPtr.Zero );
}


public int GetLastLine( )
{
return this.Lines.Length - 1; // Index de base 0.
}
}


// exemple d'utilisation :


MessageBox.Show( tb.Lines[ tb.GetLineFromCaret( ) ] );
MessageBox.Show( tb.Lines[ tb.GetLastLine( ) ] );
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dgouttegattat Messages postés 129 Date d'inscription mardi 22 novembre 2005 Statut Membre Dernière intervention 30 décembre 2007 3
1 avril 2006 à 13:35
Salut keisuke,


Si tu utilises le .NET framework 2.0, la classe TextBoxBase (dont hérite TextBox) expose une méthode GetLineFromCharIndex(int), qui renvoie le numéro de la ligne contenant le caractère dont l'index est donné en paramètre. Donc tu peux faire ceci:

int cursorPosition = myTextBox.SelectionStart;
int lineNumber = myTextBox.GetLineFromCharIndex(cursorPosition);

Si tu utilises une version précédente, essayes l'idée de Lutinore ou... change de version.
0
cs_keisuke Messages postés 60 Date d'inscription vendredi 16 juillet 2004 Statut Membre Dernière intervention 14 janvier 2009
2 avril 2006 à 14:32
je vous remercie, je n'est pas réussi avec l'idée de Lutinore, qui doit sans aucun doute fonctionner, mais comme je suis débutant je n'est pas tous compris, surement. Je pense que je vais me mettre avec la version .net2
Merci a vous.

@+

The Takahashi Keisuke
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
2 avril 2006 à 18:14
Passer à .NET 2.0 est une bonne idée de toute façon. Si tu veux tester ma version, il faut donc pas que tu utilises une TextBox mais la nouvelle version que je t'ai fournie.

Un exemple d'utilisation :

public Form1( ) // Constructeur de la forme
{
InitializeComponent( );


MyTextBox tb = new MyTextBox( );
tb.Name = "tb";
tb.Multiline = true;
tb.Dock = DockStyle.Fill;
tb.Text = "Ligne1\r\nLigne2\r\nLigne3\r\n";


Button b = new Button( );
b.Name = "b";
b.Dock = DockStyle.Bottom;
b.Text = "GetLineFromCaret";
b.Click += new EventHandler( Button_Click );


this.Controls.AddRange( new Control[ ] { tb, b } );
}


private void Button_Click( object sd, EventArgs e )
{
MyTextBox tb = ( MyTextBox )this.Controls[ "tb" ];
MessageBox.Show( tb.Lines[ tb.GetLineFromCaret( ) ] );
}
0
Rejoignez-nous