Solved

code for showing alert in windows forms using C#

Posted on 2009-03-31
11
2,749 Views
Last Modified: 2012-06-27

Can any one provide  code for creating alert for low diskspace using C# in my windows application form.
i have only one drive(say C drive). If available disk space reaches 80%, it should automatically show alert as low disk space.
can you help me i providing sample code.

i have taken button and writen code , but it checks only if press the button.
instead i need automatic alert which can pop up when available disk space reaches 80%.
private void btnSample_Click(object sender, EventArgs e)

        {

            

            ArrayList df = new ArrayList();

            DriveInfo[] driveListess = DriveInfo.GetDrives();
 

            
 
 

			

            // Loop through the list of drives

            

            

            foreach (DriveInfo driven in driveListess)

            {

                try

                {

                    if (driven.TotalFreeSpace == 0)

                    {

                        df.Add(driven.Name.ToString() + ": Disk is full . Please check ");

                    }

                    else

                    {

                        df.Add(driven.Name.ToString() + " Drive does not have space. Do you wish to delete some of the files? "); 

                     

                    }

                    

                }
 

                                                    
 

                 catch(Exception ex)
 

                {

                    FreeSpace = 0;

                    TotalSize = 0;

                    UsedSpace = 0;

                    Sweep = 0;

                    lblFileSystem.Text = "N/A";

                    lblFreeSpace.Text = "N/A";

                    lblUsedSpace.Text = "N/A";

                    lblTotalSize.Text = "N/A";

                }

                

            }

            string Alertmsg =  "      " ;
 

            foreach (string str in df)

            {

                Alertmsg += str + Environment.NewLine;

                

            }

             MessageBox.Show(Alertmsg.ToString(),"Alert",MessageBoxButtons.OK,MessageBoxIcon.Warning);
 

        }

Open in new window

0
Comment
Question by:coventri
  • 5
  • 3
  • 3
11 Comments
 
LVL 11

Expert Comment

by:bmatumbura
Comment Utility
Put a timer on the form and set it to execute every few seconds. Call your function from the Elapsed event of the time.
0
 
LVL 6

Expert Comment

by:Cebik
Comment Utility

namespace WindowsFormsApplication1

{

    public partial class Form1 : Form

    {

        Timer timer;
 

        public Form1()

        {

            InitializeComponent();
 

            timer = new Timer();

            timer.Interval = 5000; //every 5 sec for example

            timer.Tick += new EventHandler(timer_Tick);

            timer.Enabled = true;

        }
 

        void timer_Tick(object sender, EventArgs e)

        {

            //put yor methode here..

        }

    }

}

Open in new window

0
 
LVL 6

Expert Comment

by:Cebik
Comment Utility
exactly :)
i was writing example :)
0
 
LVL 1

Author Comment

by:coventri
Comment Utility
But i need code that gives alert automatically when disk space reaches 80%.

in the above code ,i have taken when the disk space is complete.

instead it shouls show alert when disk space reaches 80% of used space
0
 
LVL 6

Accepted Solution

by:
Cebik earned 250 total points
Comment Utility
use this IF statement

if (driven.TotalFreeSpace < ((double)driven.TotalSize * 0.80d))

Open in new window

0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 
LVL 6

Expert Comment

by:Cebik
Comment Utility

if (driven.TotalFreeSpace < ((double)driven.TotalSize * 0.80d))

{

    df.Add(driven.Name.ToString() + ": Disk low free space. " + HumanReadableSize(driven.TotalFreeSpace));

}
 

public string HumanReadableSize(double len)

{

    string[] sizes = { "B", "KB", "MB", "GB" };

    int order = 0;

    while (len >= 1024 && order + 1 < sizes.Length)

    {

        order++;

        len = len / 1024;

    }

    string result = String.Format("{0:0.##} {1}", len, sizes[order]);

    return result;
 

}

Open in new window

0
 
LVL 11

Expert Comment

by:bmatumbura
Comment Utility
Cebi - Don't you think the expression should be:

if (driven.TotalFreeSpace < ((double)driven.TotalSize * 0.20d))

Open in new window

0
 
LVL 6

Expert Comment

by:Cebik
Comment Utility
sorry :)
100 - 80 = 20%

if (driven.TotalFreeSpace < (driven.TotalSize * 0.20d))

            {

                df.Add(driven.Name.ToString() + ": Disk low free space. " + HumanReadableSize(driven.TotalFreeSpace));

            }

Open in new window

0
 
LVL 1

Author Comment

by:coventri
Comment Utility

The problem here is

in any case it is running only else part

else
                        {

                            df.Add(driven.Name.ToString() + " Drive is Full . Please check");
                        }

even if i take 0.2 or 0.8 it is giving only else part as output

atached is my code in timer1

private void timer1_Tick(object sender, EventArgs e)
        {

            {

                ArrayList df = new ArrayList();
                DriveInfo[] driveListess = DriveInfo.GetDrives();





                // Loop through the list of drives


                foreach (DriveInfo driven in driveListess)
                {
                    try
                    {
                        if (driven.TotalFreeSpace < (driven.TotalSize * 0.20d))



                        {
                           
                            df.Add(driven.Name.ToString() + " Please check");
                        }
                        else
                        {

                            df.Add(driven.Name.ToString() + " Drive is Full . Please check");
                        }

                    }



                    catch (Exception ex)
                    {
                        FreeSpace = 0;
                        TotalSize = 0;
                        UsedSpace = 0;
                        Sweep = 0;
                        lblFileSystem.Text = "N/A";
                        lblFreeSpace.Text = "N/A";
                        lblUsedSpace.Text = "N/A";
                        lblTotalSize.Text = "N/A";
                    }

                }
                string Alertmsg = "      ";

                foreach (string str in df)
                {
                    Alertmsg += str + Environment.NewLine;

                }
                MessageBox.Show(Alertmsg.ToString(), "Alert", MessageBoxButtons.OK, MessageBoxIcon.Warning);

            }  

        }
0
 
LVL 1

Author Comment

by:coventri
Comment Utility
it should only show alert when disk reaches 80% , rest of that it should not show any alert
0
 
LVL 11

Assisted Solution

by:bmatumbura
bmatumbura earned 250 total points
Comment Utility
Additional checks will have to be done to achieve this. A possible solution would be to stop the timer just before the dialog is displayed. i.e. use

timer.Enabled = false;

just before the MessageBox.Show statement
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Recently while returning home from work my wife (another .NET developer) was murmuring something. On further poking she said that she has been assigned a task where she has to serialize and deserialize objects and she is afraid of serialization. Wha…
This article is for Object-Oriented Programming (OOP) beginners. An Interface contains declarations of events, indexers, methods and/or properties. Any class which implements the Interface should provide the concrete implementation for each Inter…
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
This video demonstrates how to create an example email signature rule for a department in a company using CodeTwo Exchange Rules. The signature will be inserted beneath users' latest emails in conversations and will be displayed in users' Sent Items…

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now