ARTICLE

Checking previous instance (single instance) of an C# windows application, also setting MDI child form to a MDI parent

Posted by Rehan Ahmad Abbasi Articles | Visual C# September 04, 2008
In this article I will describe how to check previous instance (single instance) of an C# windows application and also whether a MDI child is set to a MDI parent
Reader Level:

Introduction

This article will describe two things:

  1. How to check previous instance of a C# windows application.

  2. How to check that whether a MDI child is set to a mdiparent, and if it is already loaded then just activate it instead of creating a new instance and setting it as MDI child.

This code is written in C#. This article will especially help those who were VB 6.0 programmer and recently shifted to .NET.

Check the Previous Instance of a Windows Application 

using System.Diagnostics;

 

      private static bool getPrevInstance()

        {

            //get the name of current process, i,e the process

            //name of this current application

 

            string currPrsName = Process.GetCurrentProcess()

                              .ProcessName;

 

            //Get the name of all processes having the

            //same name as this process name

            Process[] allProcessWithThisName

                         = Process.GetProcessesByName(currPrsName);

 

            //if more than one process is running return true.

            //which means already previous instance of the application

            //is running

            if (allProcessWithThisName.Length > 1)

            {

                MessageBox.Show("Already Running");

                return true; // Yes Previous Instance Exist

            }

            else

            {

                return false; //No Prev Instance Running

            }

        }

 

NOTE:

Instead of the above method of checking by process name  we can also use mutex,but this method is easy as compared to the mutex which requires a knowledge of threading.

This method will work fine unless and untill you change the process name.



Check Whether a MDI Child is Set to a mdiparent

 

The below code will check that whether a MDI child is set to a mdi parent and if it is already loaded and a MDI child. Then just activate it instead of creating a new instance and setting it as MDI child.

 

Suppose I have a windows form named as frmModule and I want to set it as a mdi child to MDI Form. I am calling function ActivateThisChill() with the name of the form as a parameter to this function.

 

        {

          if (ActivateThisChild("frmModule") == false)

                {

                frmModule newMDIChild = new frmModule();

                newMDIChild.Text = "Module";

                newMDIChild.MdiParent = this;

                newMDIChild.Show();

                }

            notifyIcon1.Visible = true;

            notifyIcon1.BalloonTipTitle = " Project Tracker Suite (PTS) ";

            notifyIcon1.BalloonTipText = " PTS: Modules ";

            notifyIcon1.ShowBalloonTip(2000);

 

           }

 

 

      //This function will return true or false.

      //false means this form was not previously set

      //as mdi child hence needs to creat a instance

      //and set it as a mdi child.

     private Boolean ActivateThisChild(String formName)

        {

            int i;

            Boolean formSetToMdi = false;

            for (i = 0; i < this.MdiChildren.Length; i++) 

             // loop for all the mdi children

            {

                if (this.MdiChildren[i].Name == formName)

                  // find the Mdi child with the same name as your form

                {

                    // if found just activate it.

                    this.MdiChildren[i].Activate();

                    formSetToMdi = true;

                }

            }

 

            if (i == 0 || formSetToMdi == false)

                // if the given form not found as mdi child return false.

                return false;

 

            else

                return true;

 

        }

 

Note:

The other way around is to use static property in your each form and check in your MDI parent that whether the static property of that particular form is assigned a value or not and then take your actions accordingly.

Login to add your contents and source code to this article
post comment
     

Dear friends I have created one form in which i have added 3 fields ..i want to get result of two fields in other field before i click on submit button for insertion in table field.

Posted by preeti Nov 27, 2008

Please Rate This Article

Posted by Rehan Ahmad Abbasi Sep 04, 2008

Please Rate This Article

Posted by Rehan Ahmad Abbasi Sep 04, 2008

Please Rate This Article

Posted by Rehan Ahmad Abbasi Sep 04, 2008

Please Rate This Article

Posted by Rehan Ahmad Abbasi Sep 04, 2008
COMMENT USING
PREMIUM SPONSORS
Over-C is a holistic consortium of communications and technology specialists. We build, deploy and market both business as well as consumer products and solutions.
SPONSORED BY
  • PDF reports have never been easier to create. With our included WYSIWYG Designer, you can layout your reports, set up your data source and let DynamicPDF ReportWriter do the rest.
Join a Chapter