Tuesday, July 26, 2011 | By: nika perales

Simplest Form Fade effect for VB.net

here's a simple fade effect that you can add to your WinForms application. With this code you'll be able to make a form Fade in on load and fade out on close.


'Handle Fade in of form
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)_
Handles MyBase.Load
fade_in()
End Sub

'Handle Fade Out of form
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
fade_out()
End Sub

'Fade in
Public Sub fade_in()
For FadeIn = 0.0 To 1.1 Step 0.1
Me.Opacity = FadeIn
Me.Refresh()
Threading.Thread.Sleep(100)
Next
End Sub


'Fade out:
Public Sub fade_out()
For FadeOut = 90 To 10 Step -10
Me.Opacity = FadeOut / 100
Me.Refresh()
Threading.Thread.Sleep(50)
Next
End Sub
 

How to Export Dataset contents to Excel File

If you have come across the need to export the contents of your dataset in VB.net to an excel file then this code will help you. With this code snippet you will be able to dump the entire contents of the dataset to an excel file.

Public Sub ExportDatasetToExcel(ByVal ds As DataSet, ByVal strExcelFile As String)

        Dim conn As New OleDbConnection(String.Format("provider=Microsoft.Jet.OLEDB.4.0; Data Source='{0}';" & "Extended Properties='Excel 8.0;HDR=YES;'", strExcelFile))
        conn.Open()

        Dim strTableQ(ds.Tables.Count) As String

        Dim i As Integer = 0

        'making table query
        For i = 0 To ds.Tables.Count - 1

            strTableQ(i) = "CREATE TABLE [" & ds.Tables(i).TableName & "]("

            Dim j As Integer = 0
            For j = 0 To ds.Tables(i).Columns.Count - 1
                Dim dCol As DataColumn
                dCol = ds.Tables(i).Columns(j)
                strTableQ(i) &= " [" & dCol.ColumnName & "] varchar(255) , "
            Next
            strTableQ(i) = strTableQ(i).Substring(0, strTableQ(i).Length - 2)
            strTableQ(i) &= ")"

            Dim cmd As New OleDbCommand(strTableQ(i), conn)
            cmd.ExecuteNonQuery()

        Next

        'making insert query
        Dim strInsertQ(ds.Tables.Count - 1) As String
        For i = 0 To ds.Tables.Count - 1
            strInsertQ(i) = "Insert Into " & ds.Tables(i).TableName & " Values ("
            For k As Integer = 0 To ds.Tables(i).Columns.Count - 1
                strInsertQ(i) &= "@" & ds.Tables(i).Columns(k).ColumnName & " , "
            Next
            strInsertQ(i) = strInsertQ(i).Substring(0, strInsertQ(i).Length - 2)
            strInsertQ(i) &= ")"
        Next

        'Now inserting data
        For i = 0 To ds.Tables.Count - 1
            For j As Integer = 0 To ds.Tables(i).Rows.Count - 1
                Dim cmd As New OleDbCommand(strInsertQ(i), conn)
                For k As Integer = 0 To ds.Tables(i).Columns.Count - 1
                    cmd.Parameters.AddWithValue("@" & ds.Tables(i).Columns(k).ColumnName.ToString(), ds.Tables(i).Rows(j)(k).ToString())
                Next
                cmd.ExecuteNonQuery()
                cmd.Parameters.Clear()

            Next
        Next
    End Sub
 

And here's how you use the code:

ExportDatasetToExcel(dsFinal, "d:\\my.xls")
Monday, July 25, 2011 | By: nika perales

VB.Net: Recursive File Search

VB.Net File Search Class that uses recursion as a way of finding the files the match a specified criteria. Very useful when you need to find specific files within your VB.net application.

Option Strict On
Option Explicit On 

Imports System.IO
Imports System.Collections.Specialized

Public Class FileSearch

    Private Const DefaultFileMask As String = "*.*"
    Private Const DefaultDirectoryMask As String = "*"

#Region " Member Variables "

    Private _InitialDirectory As DirectoryInfo
    Private _DirectoryMasks As StringCollection
    Private _FileMasks As StringCollection

    '
    Private _Directories As New ArrayList
    Private _Files As New ArrayList

#End Region

#Region " Properites "

    Public Property InitialDirectory() As DirectoryInfo
        Get
            Return _InitialDirectory
        End Get
        Set(ByVal Value As DirectoryInfo)
            _InitialDirectory = Value
        End Set
    End Property
    Public Property DirectoryMask() As StringCollection
        Get
            Return _DirectoryMasks
        End Get
        Set(ByVal Value As StringCollection)
            _DirectoryMasks = Value
        End Set
    End Property
    Public Property FileMask() As StringCollection
        Get
            Return _FileMasks
        End Get
        Set(ByVal Value As StringCollection)
            _FileMasks = Value
        End Set
    End Property

    Public ReadOnly Property Directories() As ArrayList
        Get
            Return _Directories
        End Get
    End Property
    Public ReadOnly Property Files() As ArrayList
        Get
            Return _Files
        End Get
    End Property

#End Region

#Region " Constructors "

    Public Sub New()

    End Sub

    Public Sub New( _
        ByVal BaseDirectory As String)
        Me.New(New DirectoryInfo(BaseDirectory))
    End Sub

    Public Sub New( _
        ByVal InitialDirectory As DirectoryInfo)

        _InitialDirectory = InitialDirectory
    End Sub

#End Region

    Public Overloads Sub Search(ByVal InitalDirectory As String, _
        Optional ByVal FileMask As String = Nothing, _
        Optional ByVal DirectoryMask As String = Nothing)

        Search( _
            New DirectoryInfo(InitalDirectory), _
            FileMask, _
            DirectoryMask _
            )

    End Sub




    Public Overloads Sub Search( _
        Optional ByVal InitalDirectory As DirectoryInfo = Nothing, _
        Optional ByVal FileMask As String = Nothing, _
        Optional ByVal DirectoryMask As String = Nothing)

        _Files = New ArrayList
        _Directories = New ArrayList

        If Not IsNothing(InitalDirectory) Then
            _InitialDirectory = InitalDirectory
        End If

        If IsNothing(_InitialDirectory) Then
            Throw New ArgumentException("A Directory Must be specified!", "Directory")
        End If

        If IsNothing(FileMask) OrElse FileMask.Length = 0 Then
            _FileMasks = New StringCollection
            _FileMasks.Add(DefaultFileMask)
        Else
            _FileMasks = ParseMask(FileMask)
        End If

        If IsNothing(DirectoryMask) OrElse DirectoryMask.Length > 0 Then
            _DirectoryMasks = New StringCollection
            _DirectoryMasks.Add(DefaultDirectoryMask)
        Else
            _DirectoryMasks = ParseMask(DirectoryMask)
        End If

        DoSearch(_InitialDirectory)
    End Sub

    Private Sub DoSearch(ByVal BaseDirectory As DirectoryInfo)

        Try
            For Each fm As String In _FileMasks
                Files.AddRange(BaseDirectory.GetFiles(fm))
            Next
            _
        Catch u As UnauthorizedAccessException
            'Siliently Ignore this error, there isnt any simple
            'way to avoid this error.

        End Try

        Try
            Dim Directories As New ArrayList

            For Each dm As String In _DirectoryMasks
                Directories.AddRange(BaseDirectory.GetDirectories(dm))
                _Directories.AddRange(Directories)
            Next

            For Each di As DirectoryInfo In Directories
                DoSearch(di)
            Next

        Catch u As UnauthorizedAccessException
            'Siliently Ignore this error, there isnt any simple
            'way to avoid this error.

        End Try

    End Sub

    'Masks are formated like *.jpeg;*.jpg
    Private Shared Function ParseMask(ByVal Mask As String) As StringCollection
        If IsNothing(Mask) Then
            Return Nothing
        End If
        Mask = Mask.Trim(";"c)
        If Mask.Length = 0 Then
            Return Nothing
        End If
        Dim Masks As New StringCollection

        Masks.AddRange(Mask.Split(";"c))

        Return Masks
    End Function


    Protected Overrides Sub Finalize()
        _Files = Nothing
        _Directories = Nothing
        MyBase.Finalize()
    End Sub

End Class 

And here's how you use the class to search for files.

Dim x As New FileSearch()

   x.Search(selectedPath, "*.jpg;*.jpeg;*.tif;*.tiff")

   For Each imageFiles As FileInfo In x.Files
      'Print Fullname of the matching files to debug window
      Debug.Print(imageFiles.FullName)
   next
Wednesday, July 20, 2011 | By: nika perales

Recursive Function in C to generate Fibonacci Numbers

int Fibonacci(int n)
{
if(n==0||n==1)
return 1;
else
return Fibonacci(n-1)+Fibonacci(n-2);
}
 
Tuesday, July 19, 2011 | By: nika perales

How to Minimize Your VB.Net Application to the System Tray

How to Minimize Your VB.Net Application to the System Tray

If you want your VB.Net application to minimize to the system tray instead of closing, then this sample project will help you. First create a windows forms application, Then add the following declarations to your forms code.
Private TrayIcon As NotifyIcon
Private TrayMenu As ContextMenuStrip
Private AppClose As Boolean   'Boolean FLAG which identifies 
                              'that you want to exit the application


The TrayIcon will hold all the information of the type of icon that you want to appear on the system tray. This includes the icon that would appear on the system tray, the text that will display when you hover on the tray icon, as well as the context menu for the tray icon.

Now Add the following code on your Forms Load Event, This will populate the contextmenu with items and add the corresponding click event handler.

 Dim mnuShowForm, mnuExit As ToolStripMenuItem
 Dim mnuSep As New ToolStripSeparator

 TrayMenu = New ContextMenuStrip

 mnuShowForm = New ToolStripMenuItem("Open Form")
 AddHandler mnuShowForm.Click, AddressOf MenuItemClick

 mnuExit = New ToolStripMenuItem("Exit Program")
 AddHandler mnuExit.Click, AddressOf MenuItemClick

 TrayMenu.Items.AddRange(New ToolStripItem() {mnuShowForm, mnuSep, mnuExit})

After that, create the procedure below

  Private Sub MenuItemClick(ByVal sender As Object, ByVal e As System.EventArgs)
        Select Case CType(sender, ToolStripMenuItem).Text
            Case "Open Form"
                TrayIcon.Visible = False
                Me.Show()

            Case "Exit Program"
                If Not IsNothing(TrayIcon) Then
                    ShowTrayIcon(False)
                    TrayIcon = Nothing
                    AppClose = True 'tell the program to exit
                                    'this prevents the form
                                    'from hiding itself
                                    'instead of closing
                End If
                Application.Exit()
        End Select
    End Sub

The above code will handle the events fired when you click on the contextmenu items of of your TrayIcon.
Now add the following code which handles the creation of the NotifyIcon Object as well as showing and hiding of the tray icon itself.
  Private Sub ShowTrayIcon(Optional ByVal blnShow As Boolean = True)
        If TrayIcon Is Nothing Then
            TrayIcon = New NotifyIcon
            TrayIcon.Icon = Me.Icon
            TrayIcon.ContextMenuStrip = TrayMenu
            TrayIcon.Text = Me.Text
        End If

        If blnShow Then
            TrayIcon.Visible = True
        Else
            TrayIcon.Visible = False
        End If
    End Sub

Finally, add the following code on your forms FormClosing event. This will trigger the showing of the tray icon and hiding the form from view.
Note: setting E.Cancel = True instructs the system that we want to cancel the closing of the form.

Attached is the completed sample project. Feel Free to send me any questions that you may have...

Download Code
Thursday, July 14, 2011 | By: nika perales

How to close all open forms in your MDI Application in VB.Net

I have came across a situation lately where i needed to close all open forms in my MDI Application when a user clicks on the log-off button. Here's how i did it...

Private Sub CloseOpenForms
    
    'create a copy of the collection of current open forms
    'because the Application.OpenForms changes everytime we
    'close an open form
     
    Dim OpenForms As FormCollection = Application.OpenForms

        For Each frm As Form In OpenForms
            'check if current form is our MDI Parent
            'if not then close it, otherwise skip it
            If Not frm.IsMdiContainer Then
               frm.Close()
            End If
        Next
End Sub
 
Saturday, July 9, 2011 | By: nika perales

WPF Binding Cheat Sheet

Getting started with a programming like WPF pretty much requires having a WPF book handy so as to help you go through simple things about the language. With this WPF Binding CheatSheet you will help your self save the time from having to scan an entire book looking how to bind controls with data as well as with other components in the language, just download this cheat sheet have it printed and have it posted in your cubicle or desk and you're all set to go...


Download Cheat Sheet