TextBox avec défilement du texte

wald39 Messages postés 68 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 23 février 2011 - 21 févr. 2006 à 12:29
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 22 févr. 2006 à 03:38
Bonjour à tous,
J'aimeris savoir comment fait on pour faire défiler le texte dans une textbox simple, pas de multiligne.
Je voudrais que le texte défile lorsque qu'il dépasse la textbox

Merci d'avance pour votre aide.

3 réponses

zebobo5 Messages postés 273 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 6 février 2009 1
21 févr. 2006 à 14:24
Salut,
tu as un exemple simple à cet adresse : ici
je te conseil de créer un control qui herite de textbox
si j'ai le tps je mettrai un code exemple à dispo.

<hr>ZeBobo5 - http://blogs.msdn.com/zebobo5/
N'oubliez pas de cloturer votre post.
0
wald39 Messages postés 68 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 23 février 2011 7
21 févr. 2006 à 15:26
C'est gentil pour ton exemple mais je l'avais deja trouver mais vu que moi et l'anglais sa fais 2 ben je comprend pas les explications, donc si tu pouvait juste me donner une idée après je réaliserai la chose, par exemple moi je pensais ajouter a chaque fois un espace au bout de mon texte ce qui le décalerait et donnerait le defilement. enfin je c pa trop alor j'atten ta réponse.
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 42
22 févr. 2006 à 03:38
Salut, un exemple avec un texte qui défile sur lui même dans la barre de titre et un autre texte qui défile le long de la forme, c'est le même principe pour un TextBox mais à mon avis dans ce cas là mieux vaut utiliser un Label.

public class MainForm : Form
{
private const string s = "Horizontal scrolling...";
private StringBuilder sb = new StringBuilder( s );

private int speed = 100;
private int smooth = 1;
private int offset = 0;


public MainForm( ) : base( )
{
/*this.SetStyle
(
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint |
ControlStyles.DoubleBuffer,
true
);*/


Timer t = new Timer( );
t.Interval = speed;
t.Tick += new EventHandler( Timer_Tick );
t.Start( );
}


private void Timer_Tick( object sender, EventArgs e )
{
this.Text = sb.Insert( sb.Length, sb.ToString( 0, smooth ) ).Remove( 0, smooth ).ToString( );


this.Invalidate( );
}


protected override void OnPaint( PaintEventArgs e )
{
// base.OnPaint( e );


Graphics g = e.Graphics;


SizeF size = g.MeasureString( s, this.Font );


offset += smooth;
if ( offset > this.ClientSize.Width )
offset = -( int )size.Width;


float x = this.ClientSize.Width - ( size.Width + offset );
float y = this.ClientSize.Height - size.Height;


g.DrawString( s, this.Font, Brushes.Black, x, y );
}


[ STAThread ]
private static void Main( )
{
Application.Run( new MainForm( ) );
}
}
0