using System;
using System.Drawing;
using System.Windows.Forms;
public class InterestCalculator : Form {
Button buttonCalculate = new Button();
TextBox textBoxPrincipal = new TextBox();
TextBox textBoxRate = new TextBox();
TextBox textBoxInterest = new TextBox();
Label labelPrincipal = new Label();
Label labelRate = new Label();
Label labelInterest = new Label();
public InterestCalculator() {
buttonCalculate.Location = new Point(50, 100);
buttonCalculate.Text = "Calculate";
buttonCalculate.Click += new System.EventHandler(this.buttonCalculate_Click);
this.Controls.Add(buttonCalculate);
textBoxPrincipal.Location = new Point(10, 20);
textBoxPrincipal.Size = new Size(150, 10);
textBoxPrincipal.Text = "100000.00";
this.Controls.Add(textBoxPrincipal);
textBoxRate.Location = new Point(10, 60);
textBoxRate.Size = new Size(150, 10);
textBoxRate.Text = "0.15";
this.Controls.Add(textBoxRate);
textBoxInterest.Location = new Point(10, 150);
textBoxInterest.Size = new Size(150, 10);
textBoxInterest.Text = "15000.00";
this.Controls.Add(textBoxInterest);
labelPrincipal.Location = new Point(10, 5);
labelPrincipal.Size = new Size(144, 15);
labelPrincipal.Text = "Principal";
this.Controls.Add(labelPrincipal);
labelRate.Location = new Point(10, 45);
labelRate.Size = new Size(144, 15);
labelRate.Text = "Rate";
this.Controls.Add(labelRate);
labelInterest.Location = new Point(10, 135);
labelInterest.Size = new Size(144, 15);
labelInterest.Text = "Interest";
this.Controls.Add(labelInterest);
}
private void buttonCalculate_Click(object sender, System.EventArgs e) {
double prin = Convert.ToDouble(textBoxPrincipal.Text);
double rate = Convert.ToDouble(textBoxRate.Text);
double amt = prin * rate;
textBoxInterest.Text = amt.ToString("f2");
}
public static void Main(string[] args) {
Application.Run(new InterestCalculator());
}
}
Text Changed event
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
public class Form1 : Form
{
private System.Windows.Forms.GroupBox GroupBox1;
private System.Windows.Forms.Label Label4;
private System.Windows.Forms.Label Label1;
private System.Windows.Forms.PictureBox pic;
private System.Windows.Forms.TextBox txt;
private System.Windows.Forms.Button cmd;
private System.Windows.Forms.Label Label2;
private System.Windows.Forms.Label Label3;
private System.Windows.Forms.ListBox eventLogList;
public Form1() {
InitializeComponent();
}
private void Log(String data)
{
eventLogList.Items.Add(data);
int itemsPerPage = (int)(eventLogList.Height / eventLogList.ItemHeight);
eventLogList.TopIndex = eventLogList.Items.Count - itemsPerPage;
}
private void txt_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
Log("Key Down: " + e.KeyCode.ToString() + e.KeyValue.ToString());
}
private void txt_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
Log("Key Press: " + e.KeyChar.ToString());
}
private void txt_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
Log("Key Up: " + e.KeyCode.ToString() + e.KeyValue.ToString() + " Text is: " + txt.Text);
}
private void txt_TextChanged(object sender, System.EventArgs e)
{
Log("Changed: " + " Text is: " + txt.Text);
}
private void pic_MouseEnter(object sender, System.EventArgs e)
{
Log("Mouse Enter");
}
private void pic_MouseHover(object sender, System.EventArgs e)
{
Log("Mouse Hover");
}
private void pic_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
Log("Mouse Down: X=" + e.X.ToString() + " Y=" + e.Y.ToString() + " Button=" + e.Button.ToString());
}
private void pic_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
Log("Mouse Up: X=" + e.X.ToString() + " Y=" + e.Y.ToString() + " Button=" + e.Button.ToString());
}
private void pic_Click(object sender, System.EventArgs e)
{
Log("Click");
}
private void pic_DoubleClick(object sender, System.EventArgs e)
{
Log("Double Click");
}
private void pic_MouseLeave(object sender, System.EventArgs e)
{
Log("Mouse Leave");
}
private void InitializeComponent()
{
this.GroupBox1 = new System.Windows.Forms.GroupBox();
this.Label4 = new System.Windows.Forms.Label();
this.Label1 = new System.Windows.Forms.Label();
this.pic = new System.Windows.Forms.PictureBox();
this.txt = new System.Windows.Forms.TextBox();
this.cmd = new System.Windows.Forms.Button();
this.Label2 = new System.Windows.Forms.Label();
this.Label3 = new System.Windows.Forms.Label();
this.eventLogList = new System.Windows.Forms.ListBox();
this.GroupBox1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pic)).BeginInit();
this.SuspendLayout();
//
// GroupBox1
//
this.GroupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.GroupBox1.Controls.Add(this.Label4);
this.GroupBox1.Controls.Add(this.Label1);
this.GroupBox1.Controls.Add(this.pic);
this.GroupBox1.Controls.Add(this.txt);
this.GroupBox1.Controls.Add(this.cmd);
this.GroupBox1.Controls.Add(this.Label2);
this.GroupBox1.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.GroupBox1.Location = new System.Drawing.Point(7, 0);
this.GroupBox1.Name = "GroupBox1";
this.GroupBox1.Size = new System.Drawing.Size(384, 148);
this.GroupBox1.TabIndex = 12;
this.GroupBox1.TabStop = false;
//
// Label4
//
this.Label4.Location = new System.Drawing.Point(92, 108);
this.Label4.Name = "Label4";
this.Label4.Size = new System.Drawing.Size(56, 16);
this.Label4.TabIndex = 5;
this.Label4.Text = "And here:";
//
// Label1
//
this.Label1.Location = new System.Drawing.Point(6, 24);
this.Label1.Name = "Label1";
this.Label1.Size = new System.Drawing.Size(144, 16);
this.Label1.TabIndex = 2;
this.Label1.Text = "Test keyboard events here:";
//
// pic
//
this.pic.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.pic.Location = new System.Drawing.Point(156, 48);
this.pic.Name = "pic";
this.pic.Size = new System.Drawing.Size(192, 48);
this.pic.TabIndex = 3;
this.pic.TabStop = false;
this.pic.DoubleClick += new System.EventHandler(this.pic_DoubleClick);
this.pic.Click += new System.EventHandler(this.pic_Click);
this.pic.MouseHover += new System.EventHandler(this.pic_MouseHover);
this.pic.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pic_MouseUp);
this.pic.MouseEnter += new System.EventHandler(this.pic_MouseEnter);
this.pic.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pic_MouseDown);
//
// txt
//
this.txt.Location = new System.Drawing.Point(156, 20);
this.txt.Name = "txt";
this.txt.Size = new System.Drawing.Size(192, 21);
this.txt.TabIndex = 1;
this.txt.KeyUp += new System.Windows.Forms.KeyEventHandler(this.txt_KeyUp);
this.txt.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txt_KeyPress);
this.txt.TextChanged += new System.EventHandler(this.txt_TextChanged);
this.txt.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txt_KeyDown);
//
// cmd
//
this.cmd.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.cmd.Location = new System.Drawing.Point(156, 100);
this.cmd.Name = "cmd";
this.cmd.Size = new System.Drawing.Size(88, 28);
this.cmd.TabIndex = 4;
this.cmd.Text = "Button1";
this.cmd.MouseLeave += new System.EventHandler(this.pic_MouseLeave);
this.cmd.Click += new System.EventHandler(this.pic_Click);
this.cmd.MouseEnter += new System.EventHandler(this.pic_MouseEnter);
this.cmd.MouseHover += new System.EventHandler(this.pic_MouseHover);
this.cmd.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pic_MouseUp);
this.cmd.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pic_MouseDown);
//
// Label2
//
this.Label2.Location = new System.Drawing.Point(20, 52);
this.Label2.Name = "Label2";
this.Label2.Size = new System.Drawing.Size(128, 16);
this.Label2.TabIndex = 2;
this.Label2.Text = "Test mouse events here:";
//
// Label3
//
this.Label3.Location = new System.Drawing.Point(23, 100);
this.Label3.Name = "Label3";
this.Label3.Size = new System.Drawing.Size(64, 24);
this.Label3.TabIndex = 11;
this.Label3.Text = "Label3";
//
// eventLogList
//
this.eventLogList.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.eventLogList.FormattingEnabled = true;
this.eventLogList.IntegralHeight = false;
this.eventLogList.Location = new System.Drawing.Point(7, 156);
this.eventLogList.Name = "eventLogList";
this.eventLogList.Size = new System.Drawing.Size(384, 212);
this.eventLogList.TabIndex = 10;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(399, 374);
this.Controls.Add(this.GroupBox1);
this.Controls.Add(this.Label3);
this.Controls.Add(this.eventLogList);
this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Name = "Form1";
this.Text = "Event Tracker";
this.GroupBox1.ResumeLayout(false);
this.GroupBox1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pic)).EndInit();
this.ResumeLayout(false);
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
A simple text editor
using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
public class MenuDialog : Form {
TextBox text = new TextBox();
public MenuDialog() {
Size = new Size(500,200);
text.Size = new Size(490,190);
text.Multiline = true;
text.ScrollBars = ScrollBars.Both;
text.WordWrap = false;
text.Location = new Point(5,5);
MenuItem fileMenu = new MenuItem("File");
MenuItem open = new MenuItem("Open");
open.Shortcut = Shortcut.CtrlO;
MenuItem save = new MenuItem("Save");
save.Shortcut = Shortcut.CtrlS;
fileMenu.MenuItems.Add(open);
fileMenu.MenuItems.Add(save);
MenuItem formatMenu = new MenuItem("Format");
MenuItem font = new MenuItem("Font");
font.Shortcut = Shortcut.CtrlF;
formatMenu.MenuItems.Add(font);
MainMenu bar = new MainMenu();
Menu = bar;
bar.MenuItems.Add(fileMenu);
bar.MenuItems.Add(formatMenu);
Controls.Add(text);
open.Click += new EventHandler(Open_Click);
save.Click += new EventHandler(Save_Click);
font.Click += new EventHandler(Font_Click);
}
protected void Open_Click(Object sender, EventArgs e) {
OpenFileDialog o = new OpenFileDialog();
if(o.ShowDialog() == DialogResult.OK) {
Stream file = o.OpenFile();
StreamReader reader = new StreamReader(file);
char[] data = new char[file.Length];
reader.ReadBlock(data,0,(int)file.Length);
text.Text = new String(data);
reader.Close();
}
}
protected void Save_Click(Object sender, EventArgs e) {
SaveFileDialog s = new SaveFileDialog();
if(s.ShowDialog() == DialogResult.OK) {
StreamWriter writer = new StreamWriter(s.OpenFile());
writer.Write(text.Text);
writer.Close();
}
}
protected void Font_Click(Object sender, EventArgs e) {
FontDialog f = new FontDialog();
if(f.ShowDialog() == DialogResult.OK)
text.Font = f.Font;
}
public static void Main() {
Application.Run(new MenuDialog());
}
}
Convert TextBox input to double value
using System;
using System.Drawing;
using System.Windows.Forms;
public class EnterPrice : Form {
private Button enter = new Button();
private Label answer = new Label();
private TextBox text = new TextBox( );
public EnterPrice( ) {
enter.Text = "Enter Price";
text.Text = "";
answer.Text = "";
Size = new Size(300,200);
answer.Size = new Size(200,50);
enter.Location = new Point(30 + enter.Width, 30);
text.Location = new Point (40 + enter.Width + enter.Width, 30);
answer.Location = new Point(20, 60);
AcceptButton = enter;
Controls.Add(text);
Controls.Add(answer);
Controls.Add(enter);
enter.Click += new EventHandler(Enter_Click);
}
protected void Enter_Click(Object sender, EventArgs e) {
try{
Console.WriteLine(Double.Parse(text.Text));
}catch(Exception){
}
text.Text = "";
text.Focus();
}
static void Main() {
Application.Run(new EnterPrice());
}
}
All cap text textbox
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
public class TextForm : System.Windows.Forms.Form
{
private System.Windows.Forms.Button btnPasswordDecoderRing;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.TextBox passwordBox;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox capsOnlyBox;
private System.Windows.Forms.Button btnGetMultiLineText;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox multiLineBox;
public TextForm()
{
InitializeComponent();
}
private void InitializeComponent()
{
this.capsOnlyBox = new System.Windows.Forms.TextBox();
this.multiLineBox = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.passwordBox = new System.Windows.Forms.TextBox();
this.btnGetMultiLineText = new System.Windows.Forms.Button();
this.btnPasswordDecoderRing = new System.Windows.Forms.Button();
this.label3 = new System.Windows.Forms.Label();
this.capsOnlyBox.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper;
this.capsOnlyBox.Location = new System.Drawing.Point(14, 176);
this.capsOnlyBox.Size = new System.Drawing.Size(120, 20);
this.capsOnlyBox.TabIndex = 3;
this.multiLineBox.AcceptsReturn = true;
this.multiLineBox.AcceptsTab = true;
this.multiLineBox.Location = new System.Drawing.Point(152, 8);
this.multiLineBox.Multiline = true;
this.multiLineBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.multiLineBox.Size = new System.Drawing.Size(240, 104);
this.multiLineBox.TabIndex = 0;
this.multiLineBox.Text = "Get text from multiline textbox";
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F);
this.label1.Location = new System.Drawing.Point(8, 8);
this.label1.Size = new System.Drawing.Size(136, 56);
this.label1.TabIndex = 1;
this.label1.Text = "this is a multiline text box";
this.label2.Font = new System.Drawing.Font("Comic Sans MS", 12F);
this.label2.Location = new System.Drawing.Point(14, 144);
this.label2.Size = new System.Drawing.Size(106, 24);
this.label2.TabIndex = 4;
this.label2.Text = "Caps only!!";
this.passwordBox.Location = new System.Drawing.Point(160, 176);
this.passwordBox.PasswordChar = '$';
this.passwordBox.Size = new System.Drawing.Size(232, 20);
this.passwordBox.TabIndex = 5;
this.passwordBox.Text = "password";
this.btnGetMultiLineText.Location = new System.Drawing.Point(13, 72);
this.btnGetMultiLineText.Size = new System.Drawing.Size(120, 32);
this.btnGetMultiLineText.TabIndex = 2;
this.btnGetMultiLineText.Text = "Get Text";
this.btnGetMultiLineText.Click += new System.EventHandler(this.btnGetMultiLineText_Click);
this.btnPasswordDecoderRing.Location = new System.Drawing.Point(280, 144);
this.btnPasswordDecoderRing.Size = new System.Drawing.Size(112, 24);
this.btnPasswordDecoderRing.TabIndex = 7;
this.btnPasswordDecoderRing.Text = "Decode Password";
this.btnPasswordDecoderRing.Click += new System.EventHandler(this.btnPasswordDecoderRing_Click);
this.label3.Font = new System.Drawing.Font("Comic Sans MS", 12F);
this.label3.Location = new System.Drawing.Point(152, 144);
this.label3.Size = new System.Drawing.Size(120, 24);
this.label3.TabIndex = 6;
this.label3.Text = "Password Box";
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(408, 221);
this.Controls.AddRange(new System.Windows.Forms.Control[] {this.btnPasswordDecoderRing,
this.label3,
this.passwordBox,
this.label2,
this.capsOnlyBox,
this.btnGetMultiLineText,
this.label1,
this.multiLineBox});
this.Text = "TextBox Types";
}
protected void btnPasswordDecoderRing_Click (object sender, System.EventArgs e)
{
MessageBox.Show(passwordBox.Text, "Your password is:");
}
protected void btnGetMultiLineText_Click (object sender, System.EventArgs e)
{
MessageBox.Show(multiLineBox.Text, "Here is your text");
}
public static void Main(string[] args)
{
Application.Run(new TextForm());
}
}
Data Checker
/*
Professional Windows GUI Programming Using C#
by Jay Glynn, Csaba Torok, Richard Conway, Wahid Choudhury,
Zach Greenvoss, Shripad Kulkarni, Neil Whitlow
Publisher: Peer Information
ISBN: 1861007663
*/
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;
using System.Threading;
namespace DataChecker
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class DataChecker : System.Windows.Forms.Form
{
private System.Windows.Forms.TextBox txtCoffeePrice;
private System.Windows.Forms.TextBox txtTeaPrice;
private System.Windows.Forms.TextBox txtGoldPrice;
private System.Windows.Forms.Label lblCoffeePrice;
private System.Windows.Forms.Label lblTeaPrice;
private System.Windows.Forms.Label lblGoldPrice;
private int lastCoffeePrice = 0;
private int lastTeaPrice = 0;
private int lastGoldPrice = 0;
private int allUpdates = 0;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
private System.Threading.Timer t1 = null;
private System.Threading.Timer t2 = null;
private System.Threading.Timer t3 = null;
public DataChecker()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
t1 = new System.Threading.Timer(new TimerCallback(Timer_Callback), 'C', 0, 500);
t2 = new System.Threading.Timer(new TimerCallback(Timer_Callback), 'T', 1, 500);
t3 = new System.Threading.Timer(new TimerCallback(Timer_Callback), 'G', 2, 500);
/*WaitOrTimerCallback wotc = new WaitOrTimerCallback(GetData);
AutoResetEvent are = new AutoResetEvent(false);
ThreadPool.RegisterWaitForSingleObject(are, new WaitOrTimerCallback(GetData), 'C', 500, false);*/
}
protected void Timer_Callback(object state)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(GetData), state);
}
int retVal;
private void GetData(object type)
{
char priceType = (char)type;
string sql = null;
sql = "SELECT Price FROM tblPrices WHERE Type='"+priceType.ToString()+"'";
SqlConnection cn = new SqlConnection("Server=localhost; Database=Prices; Integrated Security=SSPI");
cn.Open();
SqlCommand cmd = new SqlCommand(sql, cn);
lock(this)
{
retVal = (int)cmd.ExecuteScalar();
switch(priceType)
{
case 'C':
lastCoffeePrice = Convert.ToInt32(txtCoffeePrice.Text);
txtCoffeePrice.Text = retVal.ToString();
break;
case 'T':
lastTeaPrice = Convert.ToInt32(txtTeaPrice.Text);
txtTeaPrice.Text = retVal.ToString();
break;
case 'G':
lastGoldPrice = Convert.ToInt32(txtGoldPrice.Text);
txtGoldPrice.Text = retVal.ToString();
break;
}
}
allUpdates++;
cn.Close();
}
/// <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.txtCoffeePrice = new System.Windows.Forms.TextBox();
this.txtTeaPrice = new System.Windows.Forms.TextBox();
this.txtGoldPrice = new System.Windows.Forms.TextBox();
this.lblCoffeePrice = new System.Windows.Forms.Label();
this.lblTeaPrice = new System.Windows.Forms.Label();
this.lblGoldPrice = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// txtCoffeePrice
//
this.txtCoffeePrice.Location = new System.Drawing.Point(72, 24);
this.txtCoffeePrice.Name = "txtCoffeePrice";
this.txtCoffeePrice.TabIndex = 0;
this.txtCoffeePrice.Text = "0";
//
// txtTeaPrice
//
this.txtTeaPrice.Location = new System.Drawing.Point(192, 24);
this.txtTeaPrice.Name = "txtTeaPrice";
this.txtTeaPrice.TabIndex = 1;
this.txtTeaPrice.Text = "0";
//
// txtGoldPrice
//
this.txtGoldPrice.Location = new System.Drawing.Point(312, 24);
this.txtGoldPrice.Name = "txtGoldPrice";
this.txtGoldPrice.TabIndex = 2;
this.txtGoldPrice.Text = "0";
//
// lblCoffeePrice
//
this.lblCoffeePrice.Location = new System.Drawing.Point(72, 0);
this.lblCoffeePrice.Name = "lblCoffeePrice";
this.lblCoffeePrice.TabIndex = 3;
this.lblCoffeePrice.Text = "Coffee Price";
//
// lblTeaPrice
//
this.lblTeaPrice.Location = new System.Drawing.Point(192, 0);
this.lblTeaPrice.Name = "lblTeaPrice";
this.lblTeaPrice.TabIndex = 4;
this.lblTeaPrice.Text = "Tea Price";
//
// lblGoldPrice
//
this.lblGoldPrice.Location = new System.Drawing.Point(320, 0);
this.lblGoldPrice.Name = "lblGoldPrice";
this.lblGoldPrice.TabIndex = 5;
this.lblGoldPrice.Text = "Gold Price";
//
// DataChecker
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(424, 54);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.lblGoldPrice,
this.lblTeaPrice,
this.lblCoffeePrice,
this.txtGoldPrice,
this.txtTeaPrice,
this.txtCoffeePrice});
this.MaximizeBox = false;
this.Name = "DataChecker";
this.Text = "Data Checker";
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new DataChecker());
}
}
}
User Events
/*
Professional Windows GUI Programming Using C#
by Jay Glynn, Csaba Torok, Richard Conway, Wahid Choudhury,
Zach Greenvoss, Shripad Kulkarni, Neil Whitlow
Publisher: Peer Information
ISBN: 1861007663
*/
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Diagnostics;
using System.Runtime.CompilerServices;
namespace UserEvents
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class UserEvents : System.Windows.Forms.Form
{
private System.Windows.Forms.TextBox txtUsername;
private System.Windows.Forms.Button btnLogin;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
LoginAuditInserter la = new LoginAuditInserter();
public UserEvents()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
la.LoginAudit += new LoginAuditInserter.LoginAuditHandler(AddAuditEntry);
la.LoginAudit += new LoginAuditInserter.LoginAuditHandler(AddEventLogEntry);
}
static public void AddAuditEntry(string username)
{
System.Diagnostics.Debug.WriteLine(username);
}
static public void AddEventLogEntry(string username)
{
string applicationName = "Login Audit";
EventLog ev = new EventLog("Application");
ev.Source = applicationName;
ev.WriteEntry("Login Attempted.", EventLogEntryType.Information);
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
la.LoginAudit -= new LoginAuditInserter.LoginAuditHandler(AddAuditEntry);
la.LoginAudit -= new LoginAuditInserter.LoginAuditHandler(AddEventLogEntry);
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.txtUsername = new System.Windows.Forms.TextBox();
this.btnLogin = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// txtUsername
//
this.txtUsername.Location = new System.Drawing.Point(8, 24);
this.txtUsername.Name = "txtUsername";
this.txtUsername.Size = new System.Drawing.Size(152, 20);
this.txtUsername.TabIndex = 0;
this.txtUsername.Text = "";
//
// btnLogin
//
this.btnLogin.Location = new System.Drawing.Point(184, 24);
this.btnLogin.Name = "btnLogin";
this.btnLogin.Size = new System.Drawing.Size(96, 23);
this.btnLogin.TabIndex = 1;
this.btnLogin.Text = "Login";
this.btnLogin.Click += new System.EventHandler(this.btnLogin_Click);
//
// UserEvents
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 78);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.btnLogin,
this.txtUsername});
this.MaximizeBox = false;
this.Name = "UserEvents";
this.Text = "Login";
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new UserEvents());
}
private void btnLogin_Click(object sender, System.EventArgs e)
{
la.AddAuditEntry(txtUsername.Text);
}
}
public class LoginAuditInserter
{
public delegate void LoginAuditHandler(string username);
private AccessorContainer container = new AccessorContainer();
private static int key = 0;
public event LoginAuditHandler LoginAudit
{
[MethodImpl(MethodImplOptions.Synchronized)]
add
{
container.Add(key, value);
}
[MethodImpl(MethodImplOptions.Synchronized)]
remove
{
container.Remove(key, value);
}
}
protected void OnLoginAudit(string username)
{
LoginAuditHandler loginAudit = (LoginAuditHandler)container.Get(key);
if(username!=null)
{
loginAudit(username);
}
}
public void AddAuditEntry(string username)
{
OnLoginAudit(username);
}
}
public class AccessorContainer
{
private ArrayList arrayAccessor = new ArrayList();
public Delegate Get(int key)
{
return ((Delegate)arrayAccessor[key]);
}
public void Add(int key, Delegate ptr)
{
try
{
arrayAccessor[key] = Delegate.Combine((Delegate)arrayAccessor[key], ptr);
}
catch(ArgumentOutOfRangeException)
{
arrayAccessor.Add(ptr);
}
}
public void Remove(int key, Delegate ptr)
{
arrayAccessor.Remove(Delegate.Remove((Delegate)arrayAccessor[key], ptr));
}
}
}

