Posts

Showing posts from 2016

Display Tooltip for Combo Box item C#.NET Winforms

Image
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]); e.DrawBackground(); using (SolidBr…

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 user control events. For example: Yo…

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

Image
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:

privatestaticvoid updateRegistryToAddContextMenu()         { string MenuName = "Folder\\shell\\MyProduct"; string Comman…

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

Image
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.Columns[0].Header).ToString()…

Show Image on canvas HTML5

Here is the sample code to select image from system and display it on html5 canvas and javascript:


<inputtype="file"id="selectedImage"/><canvasid="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(maxWidth / srcWidth, maxHeight / srcHeight); var rtnWidth = srcWidth * rat…

Image Resizer using C#.NET Windows Application

Image
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
publicstatic 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; graphics.PixelOffsetMode = Pix…

Draw transparent Label on PictureBox C#.NET

Image
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= newDirectoryInfo(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=newDirectoryInfo(directoryPath); List<FileInfo> fileList=DirInfo.GetFiles("*",SearchOption.AllDirectories).ToList(); foreach(FileInfofile

Split list into sublists using LINQ in C#.NET

Here is the sample LINQ C# code to split list into sublistspublicstaticList<List<T>>Split<T>(thisList<T> source, intNumberOfGroup)         { returnsource                 .Select((x, i)=>new{ Index= i, Value= x})                 .GroupBy(x=> x.Index/ NumberOfGroup)                 .Selec

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. 
publicpartialclassfrmTest :Form     { classWindowCaptureChanged:NativeWindow         { publicCaptureChangedOnCaptureChanged;
protectedoverridevoidWndProc(refMessagem)             { if(m.Msg