Introduction
In this tutorial, you will learn how to make a text scrolling effect using a label control. It's really quite simple, and it has a cool visual effect. To follow this tutorial step-by-step you will need .NET Framework and Visual Studio .NET installed on your machine.Getting to work
Let's begin by creating a new C# Project using Visual Studio .NET. Select File -> New Project -> Visual C# Project -> Windows Application. Name your project however you want, I will call it TextScroll.You are now in front of the Design view of your interface. First, we must create the user interface, after witch we will begin the coding part. The first thing we will do is add a Label control. To do that, select View -> Toolbox (or press Ctrl + Alt +X ). Select the Label control, drag and drop it onto our form. Now, we will need to adjust some properties of the Label. Select the Property window (if it's not visible, select View -> Properties Window, or just press F4). Change the TextAlign property to MiddleCenter ( by doing that, the text of the label will be displayed centered ). Also, the Text property of the label needs to display no text(from theProperties window, remove the text "label1", witch Visual Studio .NET adds it by default). It is preferred that we change the BackColor property (I changed it to SlateGray color, but you can use almost any color as long as the BackColor and ForeColor are different). Now change theForeColor to LightSalmon. Let's add a Button for starting the scroll. Set its Text property to Start Scrolling and the Name to btn_start. The next thing we need to add is a TextBox control, to allow the user to input the string that he wants to scroll. Visual Studio .NET will name theTextBox to textBox1, we will change this Name to tb_scroll. Go to the Text property and remove "textBox1" string.
Another property we will need to change is MaxLength property to 30. This is the maximum number of characters that we allow the user to type into this control. The reason that we do this is that for a rather large number of characters, let's say 50, the label that we created earlier will display the text on two columns, making the scroll look rather ugly.
Put a Label control above the TextBox created earlier, and set the Text property to "Please enter the string to be scrolled:". For now, the design part is over.
After there steps, your form should look something like this:
Let's start creating some code, shall we?
Double-click the TextBox control. Visual Studio .NET created a method calledtb_text_TextChanged. As its name says, this method occurs whenever the Text property of the TextBox changes. What we want to do is disable btn_start if we have no text in theTextBox. To do this, we need to add the following code:
if (tb_text.Text.Trim()="")elsebtn_start.Enabled = false; btn_start.Enabled = true; |
In the Design view, double-click the form's surface and a method called Form1_Load is created. In this method, we need to add the following:
The reason we do this is that when our application starts, the TextBox has no text in it, and we want btn_start to be disabled, because we have no text to scroll. Let's go back to Design view and double-click btn_start. Visual Studio will create a method called btn_start_Click. In this method we will write some code to begin the scrolling.btn_start.Enabled=false;
First, we must understand how this scrolling works. We have a string, let's say "string to test the scrolling effect ". To create the effect, we must remove the last character of the string and set the label's Text property to the new string "string to test the scrolling effect". Now we must place the removed character(' ') in the first position of the string, so that we have " string to test the scrolling effect". We must repeat this action until we have the same string that we had when we started. The steps are:
| string to test the scrolling effect string to test the scrolling effect t string to test the scrolling effec ct string to test the scrolling effe ect string to test the scrolling eff fect string to test the scrolling ef ffect string to test the scrolling e effect string to test the scrolling effect string to test the scrolling g effect string to test the scrollin ...................................................... string to test the scrolling effect |
So we will have to create a function that executes the scrolling until the form is closed.
Now, we have to create a method that handles the scrolling, and call this method in thebtn_start_Click method. Let's create the following method:
| private void ScrollText() { } |
StringBuilder class helps up to manipulate strings. We call the constructor that takes a string that we will play with. The reason that a space is appended at the end of the text is to separate the last and the first character. We need this class' methods Insert (to insert the character we remove from the end at the beginning of the string ) and Remove ( to remove the last character from the string ).System.Text.StringBuilder sb = new System.Text.StringBuilder(tb_text.Text+" ");
| while (true) { }char ch = sb[sb.Length-1]; |
All we have to do now is call the ScrollText() method in the btn_start_Click method. We also need to add some extra code:
| btn_start.Enabled=false; ScrollText(); |
The main problem of the application is a non-responsive user interface. That's because we do the scroll operation is performed on the same thread that the user interface function run on. To avoid this, we need to create an asynchronous delegate.
The first step is to declare a delegate at the beginning of the class and create an instance of it.
| public delegate void ScrollDelegate(); private ScrollDelegate s_del; |
| s_del = new ScrollDelegate(ScrollText); |
| s_del.BeginInvoke(null,null); |
Here is the application when I run it on my computer:
You can play around with the sleep interval(make the interval smaller to have a faster and smoother scroll, and make it bigger to have a "lazy" scroll).
Well, we've reached the end of this lesson. I hope you had as much fun as I did!
No comments:
Post a Comment