Wednesday, January 16, 2013

Converting List of objects into Dictionary using Lambda Expression

Suppose we have a class 'Product' as below:


public class Product
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public double Price { get; set; }
        public string Location { get; set; }
 
        public Product(int id, string name, double price, string location)
        {
            this.ID = id;
            this.Name = name;
            this.Price = price;
            this.Location = location;
        }
 
        public static List<Product> GetSampleProducts()
        {
            return new List<Product> {
                                          new Product(1, "Mobile", 339.99, "ZZZ-B090-ZZZ-5"),
                                          new Product(2, "Laptop", 514.99, "RRRR-111-RRRR-2"),
                                          new Product(3, "Phone", 112.99, "AAAA-22-AAA"),
                                          new Product(4, "PC", 313.69, "WWW-343-WWWWWWW-03"),
                                          new Product(5, "AC", 413.99, "NNN-80-NNNN-342"),
                                          new Product(6, "Heater", 109.99, "TTTT-318-TTTTTTTT-424")
                                      };
        }
 
        public override string ToString()
        {
            return string.Format("The product '{0}' is at Location : {1} with price Tag : ${2}", Name, Location, Price);
        }
    }

Then we could easily convert that list of objects into a .Net Dictionary in one line if we use an useful extension method available in the List Collection and lambda expression in the following way:

            List<Product> lstProduct = Product.GetSampleProducts();
 
            Dictionary<int, Product> DictCollection1 = lstProduct.ToDictionary(x => x.ID, x => x);
 
 

Wednesday, January 9, 2013

System Shutdown and Restart through C# Code


In this article, I am going to show how we can shutdown, restart, Lock, Logoff, Sleep etc. through C# Code.
Suppose your app needs to perform operations such as shutdown, restart, Logoff, Lock, Hibernation, Sleep through code, then you need to call a process that runs specific executable file (already stored in our system) along with their required arguments.  Here I made a Utility Application ‘PC Controller’ that allows you to do these kind of such operations. A sample code is attached with this article.

After going through this article, we will get to know following points:
 Adding items in ListView Control and showing them as Small Icons
 Shutting Down, restarting, Locking , logging off operation through code

When we run this application, we get following Screen where each operation is showing as an icon in the ListView Control.

Figure-1
Let us see the above application in more detail. On this GUI designing, here a ListView Control is being used.  Just follow the steps below to design GUI:
• To show item as icons, Click the arrow on the right side of the ListViewControl in designer mode and set the View to “SmallIcon”. (See Figure-2)
• Then drop an ImageList Control and add all your icon images in the ImageList Control by setting the “Images” property to folder path where we store our all icons.
• After associating images with ImageList Control, we will see ‘imageList1’ in combo box of “SmallImageList” property. Now set the Small image List property to  ‘imageList1’.
• Now attach event handler for “SelectedIndexChanged” event.


Figure-2
In the “SelectedIndex_Changed” event handler, add the following code. In which we basically call a process by giving the executable file name and its command line arguments.
---------------------------------------------------------------------------------------------------------------
ProcessStartInfo startinfo = new ProcessStartInfo(filename, arguments);
Process.Start(startinfo);
----------------------------------------------------------------------------------------------------------------
Here is the full Code:
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            DoOperation(listView1.SelectedItems[0].Text);
        }
 
 
        private void DoOperation(string oparation)
        {
            string filename = string.Empty;
            string arguments = string.Empty;
 
            switch (oparation)
            {
                case "Shut Down":
                    filename = "shutdown.exe";
                    arguments = "-s";
                    break;
 
                case "Restart":
 
                    filename = "shutdown.exe";
                    arguments = "-r";
                    break;
 
                case "Logoff":
 
                    filename = "shutdown.exe";
                    arguments = "-l";
                    break;
 
                case "Lock":
 
                    filename = "Rundll32.exe";
                    arguments = "User32.dll, LockWorkStation";
                    break;
                case "Hibernation":
 
                    filename = @"%windir%\system32\rundll32.exe";
                    arguments = "PowrProf.dll, SetSuspendState";
                    break;
                case "Sleep":
 
                    filename = "Rundll32.exe";
                    arguments = "powrprof.dll, SetSuspendState 0,1,0";
                    break;
            }
 
            ProcessStartInfo startinfo = new ProcessStartInfo(filename, arguments);
            Process.Start(startinfo);
 
     this.Close();
 
        }
    }

Tuesday, January 8, 2013

Free Bingo Ticket Generator Downlaod


Here I made a Bingo Ticket Generator. Feel free to download this user friendly version by clicking following link:

Download Bingo Ticket Generator!!!

 

Features:

Print: You can easily print a bunch of tickets
Copy-Paste: You may copy the tickets and paste them anywhere e.g. Notepad, MS-Word, MS-Excel
Export: You can directly export a bunch of tickets to a MS-Excel File
Image: You can save them in Image format too and then can print.

On running of this ticket generator app, you would see a screen as below: