Skip to main content

Posts

Showing posts from 2016

Display Tooltip for Combo Box item C#.NET Winforms

In windows form combo box control sometimes while adidng items dynamically we have items whose width is greater than width of combox box control. In this case for making UI more user friendly we can show tooltip over such item. Here is the sample C# code to display such tooltip:  Add a Tooltip control on the form.  Add following code : this . combo_box1 . DropDownStyle = System . Windows . Forms . ComboBoxStyle . DropDownList; this . combo_box1 . DrawMode = DrawMode . OwnerDrawFixed; this . combo_box1 . DrawItem += new DrawItemEventHandler(combo_box1_DrawItem); this . combo_box1 . DropDownClosed += new EventHandler(combo_box1_DropDownClosed); this . combo_box1 . MouseLeave += new EventHandler(combo_box1_Leave); void combo_box1_DrawItem( object sender, DrawItemEventArgs e) { if (e . Index < 0 ) { return ; } string text = combo_box1 . GetItemText(combo_box1 . Items[e . Index

Adding user control and defining it's functionality in C#.Net

Advantages of using a User control: User controls provide an easy way to combine several controls into a single unit of functionality that can be dragged onto multiple webpages in the same site. User controls in ASP.NET are created as ASCX files. An ASCX file is similar to the webpage’s ASPX file and can have its own code-behind page. It helps you define a consistent user interface.   You can add user control to your website and define it's events by following the below steps: Creating the website and the user control: Open Visual studio and create a website. Right click the solution explorer and add New item dialog box and select Web User control. This adds a file with the .ascx extension to your application. The user control has both a Design view and a Source view, similar to that of an ASPX page. You can add controls on to the user control in a similar manner as you do for any web page (You can add text boxes, buttons etc). You may now need to define

Adding a new item to context menu of Windows Explorer in C#.Net

Requirement : Whenever user right clicks on any folder in windows explorer, display a new option and if user selects that option, launch your application. The below steps will add a new option on right click of any folder: You would need to add 2 sub keys in registry at the below location: HKEY_CLASSES_ROOT\Folder\shell Key 1: Folder\\shell\\MyProduct Set the value of above key and the same will be shown in the context menu. You can also add a icon to the context menu item by adding a value to the key 1 and name it "Icon" as shown below: Icon  "Path to your icon file" Key 2: Folder\\shell\\MyProduct\\command Set the value of above key and it will launch the application: Eg. C:\Program Files (x86)\myProduct.exe "%1" Here "%1" will give the path of the folder which is right clicked. Programmatically this can be done as below: private static void updateRegistryToAddContextMenu()         {             string

Exporting datagrid to CSV using Save Dialog in C#.NET

Below is the code for exporting the data of a data grid in C#.Net Datagrid is as follows: System.Windows.Forms.SaveFileDialog saveDlg = new System.Windows.Forms.SaveFileDialog(); saveDlg.InitialDirectory = @"C:\" ; saveDlg.Filter = "CSV files (*.csv)|*.csv" ; saveDlg.FilterIndex = 0 ; saveDlg.RestoreDirectory = true ; saveDlg.Title = "Export csv File To" ; if (saveDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { string CsvFpath = saveDlg.FileName; System.IO.StreamWriter csvFileWriter = new StreamWriter(CsvFpath, false ); string columnHeaderText = "" ; int countColumn = comparisonGrid.Columns.Count - 1 ; if (countColumn >= 0 ) { columnHeaderText = (comparisonGrid.

Show Image on canvas HTML5

Here is the sample code to select image from system and display it on html5 canvas and javascript: <input type= "file" id= "selectedImage" /> <canvas id= "myCanvas" width= "500" height= "500" > </canvas> Javascript code: $( "#selectedImage" ).change( function (e) { var URL = window .URL; var url = URL.createObjectURL(e.target.files[ 0 ]); img.src = url; img.onload = function () { var canvas = document .getElementById( "myCanvas" ); var ctx = canvas.getContext( "2d" ); var imgSize = calculateAspectRatioFit(img.width, img.height, canvas.clientWidth, canvas.clientHeight); ctx.clearRect( 0 , 0 , canvas.width, canvas.height); ctx.drawImage(img, 0 , 0 , imgSize.width, imgSize.height); } }); function calculateAspectRatioFit(srcWidth, srcHeight, maxWidth, maxHeight) { var ratio = Math .min(maxWi

Image Resizer using C#.NET Windows Application

Code to Resize Image (with Sample Application) In this post I am sharing the code to resize an image using C#.NET. Also sharing the code to preview and save resized image in multiple formats (jpeg, bmp, png, gif, tiff). Code to Resize Image for given width and height public static Bitmap ResizeImage(Image image, int width, int height) { var destRect = new Rectangle(0, 0, width, height); var destImage = new Bitmap(width, height); destImage.SetResolution(image.HorizontalResolution, image.VerticalResolution); using ( var graphics = Graphics.FromImage(destImage)) { graphics.CompositingMode = CompositingMode.SourceCopy; graphics.CompositingQuality = CompositingQuality.HighQuality; graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; graphics.SmoothingMode = SmoothingMode.HighQuality;

Draw transparent Label on PictureBox C#.NET

Label control supports transparent property but picture box do not work as container control. So even if we add label control on picturebox the parent control will become main form or any other underlying container control. Hence on adding label control on picture box and making label control background  transparent shows background of form or any other container control is rather than picture box. This can be changed using simple code in form constructor. We need to change parent property of label and recalculate its location because it is now relative to picturebox instead of form. Hetre is the sample code to do this -  public Form1() {         InitializeComponent();         var pos = this.PointToScreen(label1.Location);         pos = pictureBox1.PointToClient(pos);         label1.Parent = pictureBox1;         label1.Location = pos;         label1.BackColor = Color.Transparent;     }

Recursively delete files from Directory C#.NET

Recursively delete files from given directory keeping the directory structure intact C#.NET To get all the files present in the subdirectories of the given directory, use "SearchOption.AllDirectories" DirectoryInfo  DirInfo   =  new   DirectoryInfo ( directoryPath ); DirInfo . GetFiles   ( "*" ,  SearchOption . AllDirectories   ). ToList (). ForEach ( file   => file . Delete ()); The above code will delete all the files for the given directory while keeping the structure of directory intact. To send files in recycle bin instead of deleting it from system use "FileSystem.DeleteFile" function of VisualBasic assembly. Add reference to VisualBasic dll and add "using Microsoft.VisualBasic.FileIO" DirInfo   =   new   DirectoryInfo (   directoryPath   ); List < FileInfo >  fileList   =   DirInfo . GetFiles ( "*" ,   SearchOption . AllDirectories ). ToList (); foreach   ( FileInfo   file   in   fileList  

Split list into sublists using LINQ in C#.NET

Here is the sample LINQ C# code to split list into sublists public   static   List < List <T>> Split < T >(   this   List   <T>  source ,  int   NumberOfGroup   )         {              return   source                 . Select (( x   ,  i )=> new   {  Index   =  i ,  Value   =  x   })                 . GroupBy ( x   =>  x . Index   /  NumberOfGroup   )                 . Select ( x   =>  x . Select   ( v   =>  v . Value ). ToList ())                 . ToList ();         } The idea is to first group the elements by indexes. Dividing by  NumberOfGroup  as the effect of grouping them into groups of NumberOfGroup. Then convert each group to a list and the IEnumerable of List to a List of Lists For reference try this link - http://stackoverflow.com/questions/419019/split-list-into-sublists-with-linq Similar to list we can divide dictionary also in sub-dictionaries. Here is the sample code public   static   List <   Dictio

Capture or Detect mouse click on or outside Windows Form using C#.NET

Sometimes in case of Windows form application where we have multiple windows opened and we need to find on which window user has clicked. One method to find this is to capture the mouse click message.  Here is the sample code to close form if mouse click happen outside the form.    public   partial   class   frmTest  :   Form     {           class   Window CaptureChanged   :   NativeWindow         {               public   CaptureChanged   OnCaptureChanged ;               protected   override   void   WndProc ( ref   Message   m )             {                   if   ( m . Msg   == 533)       // WM_CAPTURECHANGED                       OnCaptureChanged ();                   base . WndProc   ( ref   m );             }         }           public   delegate   void   CaptureChanged ();           public   CaptureChanged   OnCaptureChanged ;           WindowCaptureChanged   wcc   ;           public  frmTest ( )         {                          Init