/*
User Interfaces in C#: Windows Forms and Custom Controls
by Matthew MacDonald
Publisher: Apress
ISBN: 1590590457
*/
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace SystemTrayApp
{
/// <summary>
/// Summary description for SystemTrayApp.
/// </summary>
public class SystemTrayApp : System.Windows.Forms.Form
{
internal System.Windows.Forms.Label Label1;
internal System.Windows.Forms.Button cmdClose;
internal System.Windows.Forms.ListBox lstFiles;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public SystemTrayApp()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Label1 = new System.Windows.Forms.Label();
this.cmdClose = new System.Windows.Forms.Button();
this.lstFiles = new System.Windows.Forms.ListBox();
this.SuspendLayout();
//
// Label1
//
this.Label1.Location = new System.Drawing.Point(10, 7);
this.Label1.Name = "Label1";
this.Label1.Size = new System.Drawing.Size(140, 16);
this.Label1.TabIndex = 5;
this.Label1.Text = "Recently created files:";
//
// cmdClose
//
this.cmdClose.Anchor = (System.Windows.Forms.AnchorStyles.Bottom |
System.Windows.Forms.AnchorStyles.Right);
this.cmdClose.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.cmdClose.Location = new System.Drawing.Point(162, 203);
this.cmdClose.Name = "cmdClose";
this.cmdClose.Size = new System.Drawing.Size(88, 24);
this.cmdClose.TabIndex = 4;
this.cmdClose.Text = "Close";
this.cmdClose.Click += new System.EventHandler(this.cmdClose_Click);
//
// lstFiles
//
this.lstFiles.Anchor = (((System.Windows.Forms.AnchorStyles.Top |
System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right);
this.lstFiles.IntegralHeight = false;
this.lstFiles.Location = new System.Drawing.Point(10, 27);
this.lstFiles.Name = "lstFiles";
this.lstFiles.Size = new System.Drawing.Size(240, 168);
this.lstFiles.TabIndex = 3;
//
// SystemTrayApp
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 14);
this.ClientSize = new System.Drawing.Size(260, 234);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.Label1,
this.cmdClose,
this.lstFiles});
this.Font = new System.Drawing.Font("Tahoma", 8.25F,
System.Drawing.FontStyle.Regular,
System.Drawing.GraphicsUnit.Point,
((System.Byte)(0)));
this.Name = "SystemTrayApp";
this.Text = "SystemTrayApp";
this.ResumeLayout(false);
}
#endregion
private void cmdClose_Click(object sender, System.EventArgs e)
{
this.Close();
}
public void FillList(ArrayList list)
{
lstFiles.DataSource = list;
}
}
}
//====================================================================
//====================================================================
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.IO;
namespace SystemTrayApp
{
public class App
{
// Define the system tray icon control.
private NotifyIcon appIcon = new NotifyIcon();
// Define the menu.
private ContextMenu sysTrayMenu = new ContextMenu();
private MenuItem displayFiles = new MenuItem("Display New Files");
private MenuItem exitApp = new MenuItem("Exit");
// Define the file system watcher, and a list to store filenames.
private FileSystemWatcher watch = new FileSystemWatcher();
private ArrayList newFiles = new ArrayList();
public void Start()
{
// Configure the system tray icon.
Icon ico = new Icon("icon.ico");
appIcon.Icon = ico;
appIcon.Text = "My .NET Application";
// Place the menu items in the menu.
sysTrayMenu.MenuItems.Add(displayFiles);
sysTrayMenu.MenuItems.Add(exitApp);
appIcon.ContextMenu = sysTrayMenu;
// Show the system tray icon.
appIcon.Visible = true;
// Hook up the file watcher.
watch.Path = "c:\\";
watch.IncludeSubdirectories = true;
watch.EnableRaisingEvents = true;
// Attach event handlers.
watch.Created += new FileSystemEventHandler(FileCreated);
displayFiles.Click += new EventHandler(DisplayFiles);
exitApp.Click += new EventHandler(ExitApp);
}
private void FileCreated(object sender, System.IO.FileSystemEventArgs e)
{
newFiles.Add(e.Name);
}
private void ExitApp(object sender, System.EventArgs e)
{
Application.Exit();
}
private void DisplayFiles(object sender, System.EventArgs e)
{
FileList frmFileList = new FileList();
frmFileList.FillList(newFiles);
frmFileList.Show();
}
public static void Main()
{
App app = new App();
app.Start();
// Because no forms are being displayed, you need this
// statement to stop the application from automatically ending.
Application.Run();
}
}
}
|