Shift key pressed

image_pdfimage_print


   


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

public class Form1 : Form
{
   [DllImport("User32.dll")]
   private static extern short GetAsyncKeyState( System.Windows.Forms.Keys vKey); 
  private System.Windows.Forms.TextBox textBox1;
  private System.Windows.Forms.Label lbl;
  private System.Windows.Forms.Button cmdAsyncState;

  public Form1() {
        InitializeComponent();
  }

  private void Form1_KeyPress(object sender, KeyPressEventArgs e)
  {
    e.Handled = true;
  }

  private void Form1_KeyDown(object sender, KeyEventArgs e)
  {
    lbl.Text = "Key Down: " + e.KeyValue.ToString();
    lbl.Text += "
Key Code: " + e.KeyCode.ToString();
    lbl.Text += "
Key Data: " + e.KeyData.ToString();

    if ((e.Modifiers & Keys.Shift) == Keys.Shift)
    {
      lbl.Text += "
" + "Shift was held down.";
    }

    if ((e.Modifiers & Keys.Control) == Keys.Control)
    {
      lbl.Text += "
" + "Control was held down.";
    }
    if (e.Alt)
    {
      lbl.Text += "
" + "Alt was held down.";
    }
  }

  private void cmdAsyncState_Click(object sender, EventArgs e)
  {
    int state = Convert.ToInt32(GetAsyncKeyState(Keys.A).ToString());
    switch (state)
    {
      case 0:
        lbl.Text = "A has not been pressed since the last call.";
        break;
      case 1:
        lbl.Text = "A is not currently pressed, but has been pressed since the last call.";
          break;
      case -32767:
        lbl.Text = "A is currently pressed.";
        break;
    }
  }

  private void InitializeComponent()
  {
    this.textBox1 = new System.Windows.Forms.TextBox();
    this.lbl = new System.Windows.Forms.Label();
    this.cmdAsyncState = new System.Windows.Forms.Button();
    this.SuspendLayout();
    // 
    // textBox1
    // 
    this.textBox1.Location = new System.Drawing.Point(36, 36);
    this.textBox1.Name = "textBox1";
    this.textBox1.Size = new System.Drawing.Size(205, 21);
    this.textBox1.TabIndex = 0;
    this.textBox1.Text = "<Text will never appear here>";
    // 
    // lbl
    // 
    this.lbl.AutoSize = true;
    this.lbl.Location = new System.Drawing.Point(35, 77);
    this.lbl.Name = "lbl";
    this.lbl.Size = new System.Drawing.Size(0, 0);
    this.lbl.TabIndex = 1;
    // 
    // cmdAsyncState
    // 
    this.cmdAsyncState.Location = new System.Drawing.Point(36, 202);
    this.cmdAsyncState.Name = "cmdAsyncState";
    this.cmdAsyncState.Size = new System.Drawing.Size(141, 24);
    this.cmdAsyncState.TabIndex = 2;
    this.cmdAsyncState.Text = "GetAsyncState() for "A"";
    this.cmdAsyncState.Click += new System.EventHandler(this.cmdAsyncState_Click);
    // 
    // Form1
    // 
    this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    this.ClientSize = new System.Drawing.Size(292, 266);
    this.Controls.Add(this.cmdAsyncState);
    this.Controls.Add(this.lbl);
    this.Controls.Add(this.textBox1);
    this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
    this.KeyPreview = true;
    this.Name = "Form1";
    this.Text = "KeyTest";
    this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Form1_KeyPress);
    this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);
    this.ResumeLayout(false);
    this.PerformLayout();

  }


  [STAThread]
  static void Main()
  {
    Application.EnableVisualStyles();
    Application.Run(new Form1());
  }

}


           
          


Check KeyCode from KeyEventArgs

image_pdfimage_print
   



using System;
using System.Drawing;
using System.Windows.Forms;
   
class ExitOnX: Form
{
     public static void Main()
     {
          Application.Run(new ExitOnX());
     }
     public ExitOnX()
     {
          Text = "Exit on X";
     }
     protected override void OnKeyDown(KeyEventArgs kea)
     {
          if (kea.KeyCode == Keys.X)
               Close();
     }
}
           
          


Close Form with Pressing X key

image_pdfimage_print
   




using System;
using System.Drawing;
using System.Windows.Forms;
   
class ExitOnX: Form
{
     public static void Main()
     {
          Application.Run(new ExitOnX());
     }
     public ExitOnX()
     {
          Text = "Exit on X";
     }
     protected override void OnKeyDown(KeyEventArgs kea)
     {
          if (kea.KeyCode == Keys.X)
               Close();
     }
}
           
          


Event system explained in detail

image_pdfimage_print
   

using System;

namespace Demo
{
    //step 0. use event to simply complex interaction, independent data process module

    //step 1. declare a event signatrue
    public delegate void OnUserDeviceInsertedEvent(object sender, UserDeviceInsertedArgs e);

    //step 2. declare the event args
    public class UserDeviceInsertedArgs : EventArgs
    {
        public string DeviceData;
    }

    //step 3. declare a real work class which has 1 event field member and 1 working method member, in the method event will be triggered when condiation ready

    public class MagCard
    {
        public OnUserDeviceInsertedEvent OnDeviceInserted;
        public void StartingWork()
        {
            UserDeviceInsertedArgs data = new UserDeviceInsertedArgs();
            data.DeviceData = "Demo Data";
            if (OnDeviceInserted != null)
            {
                OnDeviceInserted(this, data);
            }
        }
    }

    //step 4. in main system, ord the event and supperly suitable process
    static class Program
    {
        /// <summary>
        /// ??????????
        /// </summary>
        [STAThread]
        static void Main()
        {
            MagCard machine = new MagCard();
            machine.OnDeviceInserted += new OnUserDeviceInsertedEvent(EventHandler_OnDeviceInserted);
            machine.StartingWork();
            Console.ReadKey();
        }

        private static void EventHandler_OnDeviceInserted(object sender, UserDeviceInsertedArgs e)
        {
            Console.ForegroundColor = ConsoleColor.Magenta;
            Console.WriteLine(e.DeviceData);
            Console.ResetColor();
        }
    }
    //Coding by MoonKite,2010-June,Study C#
    //Thanks for Java2s,I learned a lot form this website.
}       
           
          


new WaitCallback

image_pdfimage_print

using System;
using System.Threading;

class ThreadPoolDemo {
public void LongTask1(object obj) {
for (int i = 0; i <= 999; i++) { Console.WriteLine("Long Task 1 is being executed"); } } public void LongTask2(object obj) { for (int i = 0; i <= 999; i++) { Console.WriteLine("Long Task 2 is being executed"); } } static void Main() { ThreadPoolDemo tpd = new ThreadPoolDemo(); for (int i = 0; i < 50; i++) { ThreadPool.QueueUserWorkItem(new WaitCallback(tpd.LongTask1)); ThreadPool.QueueUserWorkItem(new WaitCallback(tpd.LongTask2)); } Console.Read(); } } [/csharp]

new ThreadStart

image_pdfimage_print
   
 

using System;
using System.Threading;

public class SimpleThread {
    public void SimpleMethod() {
        int result = 1;
        Console.WriteLine(result.ToString() + " from thread ID: " +
                          AppDomain.GetCurrentThreadId().ToString());
    }

    public static void Main() {
        SimpleThread simpleThread = new SimpleThread();
        simpleThread.SimpleMethod();

        ThreadStart ts = new ThreadStart(simpleThread.SimpleMethod);
        Thread t = new Thread(ts);
        t.Start();
    }
}

    


Threading Class Mutex

image_pdfimage_print
   

/*
 * C# Programmers Pocket Consultant
 * Author: Gregory S. MacBeth
 * Email: gmacbeth@comporium.net
 * Create Date: June 27, 2003
 * Last Modified Date:
 * Version: 1
 */
using System;
using System.Collections;
using System.Threading;

namespace Client.Chapter_15___Threading
{
  public class ThreadingClassMutex
  {
    public static Thread ThreadOne = new Thread(new ThreadStart(MutexExample));
    public static ArrayList MyList = new ArrayList();
    private static Mutex MyMutex = new Mutex(false, "MyMutex");
    public ThreadingClassMutex()
    {
      MyList.Add("Test1");
      MyList.Add("Test2");
    }
    static void Main(string[] args)
    {
      ThreadOne.Start();
    }
    protected static void MutexExample()
    {
      MyMutex.WaitOne();
      MyList.Add("Test3");
      MyMutex.ReleaseMutex();
    }
  }

}