Tuesday 19 February 2013

C# Hello World (Graphic User Interface)

We are going to create a Hello World with GUI (Graphic User Interface) in C#. Like in previous post we start by creating new project.

Click on "File"->"New"->"Project" or shortcut "CTRL+SHIFT+N".

Again, we click on Visual C# on left side, but this time we need to select Windows Forms Application on the right side of screen. Under name type HelloWorldGUI and click OK button. It should look like this:



This creates new project and a screen with a window appears. On the left side there is also Toolbox which contains different elements that can be dragged and dropped on window. If you don't see toolbox on left side go to "View"->"Toolbox" and it will appear.

Select a Button from toolbox and drag and drop it on the window. Then select Label from toolbox and drag and drop it on the window under button. It should look like this:



Now click once on the window and take a look at lower right part of screen where it says Properties. Find where it says Text in list and write down My First GUI. This will change the text in upper left corner of your window from default text (which is usually Form1) to whatever you write in Text field.

Select button that is inside window, go to properties again, and under Text type Click me! in order to change text on the button.

Now select label that is inside window, go to properties again, and under Text type Button not clicked in order to change text on the label. Now go to (Name) property and change it to myLabel. This will set the name of label which we can use in our code. After renaming GUI should look like this:



Next step is double click on button. This will create a function for clicking on a button (click event). Here we get a code that looks something like this:

 using System;  
 using System.Collections.Generic;  
 using System.ComponentModel;  
 using System.Data;  
 using System.Drawing;  
 using System.Linq;  
 using System.Text;  
 using System.Windows.Forms;  
 namespace HelloWorldGUI  
 {  
   public partial class Form1 : Form  
   {  
     public Form1()  
     {  
       InitializeComponent();  
     }  
     private void button1_Click(object sender, EventArgs e)  
     {  
     }  
   }  
 }  


In order to change text on our label we add a line myLabel.Text = "Hello World!"; so that our code looks something like this:

 using System;  
 using System.Collections.Generic;  
 using System.ComponentModel;  
 using System.Data;  
 using System.Drawing;  
 using System.Linq;  
 using System.Text;  
 using System.Windows.Forms;  
 namespace HelloWorldGUI  
 {  
   public partial class Form1 : Form  
   {  
     public Form1()  
     {  
       InitializeComponent();  
     }  
     private void button1_Click(object sender, EventArgs e)  
     {  
       myLabel.Text = "Hello World!";  
     }  
   }  
 }  

Now run it by pressing F5 and try clicking the button.

Finally let's create a counter for our button that counts how many times it has been pressed. First we initialize an integer by putting int counter=0; before public Form1(). This creates a variable that has initial value 0. Inside our button click function - private void button1_Click we need to increase value of counter. This can be done by typing counter++; or counter = counter + 1; - either one will increase value of counter each time button is pressed. Now instead of "Hello World!" we put "Button has been clicked "+counter+" times!" - this will type out text "Button has been clicked" and "times!", but thanks to + sign it will also print out value of counter between those two parts.

Final code should look like this:

 using System;  
 using System.Collections.Generic;  
 using System.ComponentModel;  
 using System.Data;  
 using System.Drawing;  
 using System.Linq;  
 using System.Text;  
 using System.Windows.Forms;  
 namespace HelloWorldGUI  
 {  
   public partial class Form1 : Form  
   {  
     int counter = 0;  
     public Form1()  
     {  
       InitializeComponent();  
     }  
     private void button1_Click(object sender, EventArgs e)  
     {  
       counter++;  
       myLabel.Text = "Button has been clicked " + counter + " times";  
     }  
   }  
 }  

Try running it and keep clicking the button. Your results should look like this:


Friday 8 February 2013

C# Hello World (Console)

This is a short tutorial for your first application in C#. Although there are many implementations of C# (like Mono), I will provide tutorial in Microsoft's Visual Studio.

First we will create "Hello World" console application. These are the steps:

Click on "File"->"New"->"Project" or shortcut "CTRL+SHIFT+N".

New window will appear. On left side you can see different languages. Select Visual C#. This will open a list of most common project types on the right side of the window. Select Console Application. Now we have to name it - type MyFirstApplication in name field. While you do this, solution name will change accordingly. If you want you can also change default location of your project. When you are done click "OK" button.



Again new window appears with your first class already generated. You will see some premade code that looks like this:

 using System;  
 using System.Collections.Generic;  
 using System.Linq;  
 using System.Text;  
 namespace MyFirstApplication  
 {  
   class Program  
   {  
     static void Main(string[] args)  
     {  
     }  
   }  
 }  

Now add a line Console.WriteLine("This is my Hello World!"); within Main method so  it looks like following:

 using System;  
 using System.Collections.Generic;  
 using System.Linq;  
 using System.Text;  
 namespace MyFirstApplication  
 {  
   class Program  
   {  
     static void Main(string[] args)  
     {  
       Console.WriteLine("This is my Hello World!");  
     }  
   }  
 }  

Console.WriteLine("bla bla bla"); is used to print out whatever is contained within quotation marks (in this case it will print out bla bla bla.

To start program click on green "play" button or press F5. This will run your program, however you will most likely not be able to see what it prints out because console closes too fast. To avoid that we will add another line of code that requires user to press enter before console closes. Add this line below the last one
Console.ReadLine(); so that code looks like this:

 using System;  
 using System.Collections.Generic;  
 using System.Linq;  
 using System.Text;  
 namespace MyFirstApplication  
 {  
   class Program  
   {  
     static void Main(string[] args)  
     {  
       Console.WriteLine("This is my Hello World!");  
       Console.ReadLine();  
     }  
   }  
 }  

Now try running it again (F5). This time you can see the printed text and console waits for you to press enter in order to finish running.

Now let's try to enter a line of text and print out the text we entered. For this we need to create a String. It will save whatever we write in one line and then we can use it to print out what has been saved in it. To do this we need to insert two lines above our current code. First line is the declaration of String with name "message" and it should be String message;. Second line is for storing text from whatever line you write on keyboard and it should be message = Console.ReadLine();. Your code should now look like this:

 using System;  
 using System.Collections.Generic;  
 using System.Linq;  
 using System.Text;  
 namespace MyFirstApplication  
 {  
   class Program  
   {  
     static void Main(string[] args)  
     {  
       String message;  
       message = Console.ReadLine();  
       Console.WriteLine("This is my Hello World!");  
       Console.ReadLine();  
     }  
   }  
 }  

If you try to run it it will first request from you a line of text (when you press enter it will finish taking text), but it will print out This is my Hello World!. In order to change that we need to make it print out our message. To do this we simply remove "This is my Hello World!" and write message inside parentheses. Now the code should look like this:

 using System;  
 using System.Collections.Generic;  
 using System.Linq;  
 using System.Text;  
 namespace MyFirstApplication  
 {  
   class Program  
   {  
     static void Main(string[] args)  
     {  
       String message;  
       message = Console.ReadLine();  
       Console.WriteLine(message);  
       Console.ReadLine();  
     }  
   }  
 }  

And that's it!