Reader Level:

Scrolling Text Marquee Control

Posted by Sam Hobbs Articles | Windows Forms C# January 13, 2010
The following article is a simple sample of a scrolling text marquee control for a Windows Forms application.
  • 1
  • 0
  • 46606

The HTML MARQUEE Element creates a scrolling text marquee, but there is not an equivalent provided by Microsoft for desktop applications. The following is a simple sample of a scrolling text marquee control for a Windows Forms application.

The control uses a Timer object. For each timer tick, the text to scroll is updated by moving the current first character to the last character position. This causes the affect of the text continually scrolling. The text is written directly to the control's window using TextRenderer.DrawText.

To use the control, simply add the UserControl to a form and then during execution, such as in the form's constructor, set the UserControl's Text property to the text to scroll. If you are unfamiliar with the use of UserControls, then simply add the ScrollingTextControl.cs file in the attached file to the project, then build the project to ensure that Visual Studio sees it as a UserControl, then drag the ScrollingTextControl from the Toolbox onto the form.

The following is the UserControl.
public partial class ScrollingTextControl : UserControl
    Timer MarqueeTimer = new Timer();
    String CurrentText = "Scrolling text";
    String OurText;

    public ScrollingTextControl()
        MarqueeTimer.Interval = 150;
        MarqueeTimer.Enabled = true;
        MarqueeTimer.Tick += new EventHandler(MarqueeUpdate);

    public int Interval
        get { return MarqueeTimer.Interval; }
        set { MarqueeTimer.Interval = value; }

    public override String Text
        get { return OurText; }
        set { OurText = value; CurrentText = OurText; }

    private void ScrollingTextControl_Paint(object sender, PaintEventArgs e)
        TextRenderer.DrawText(e.Graphics, CurrentText, Font, ClientRectangle,

    void MarqueeUpdate(object sender, EventArgs e)
        CurrentText = CurrentText.Substring(1) + CurrentText[0];


Trending up