Click here to Skip to main content
15,891,567 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I would like to add access keys to a little calculator application. The numbers have to be pressed when the user selects 0 to 9 on the numeric keypad.

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

namespace TestApplication
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btn1_Click(object sender, EventArgs e)
        {
            txtDisplay.Text += "1";
        }

        private void btn2_Click(object sender, EventArgs e)
        {
            txtDisplay.Text += "2";
        }

        private void btn3_Click(object sender, EventArgs e)
        {
            txtDisplay.Text += "3";
        }

        private void btn4_Click(object sender, EventArgs e)
        {
            txtDisplay.Text += "4";
        }

        private void btn5_Click(object sender, EventArgs e)
        {
            txtDisplay.Text += "5";
        }

        private void btn6_Click(object sender, EventArgs e)
        {
            txtDisplay.Text += "6";
        }

        private void btn7_Click(object sender, EventArgs e)
        {
            txtDisplay.Text += "7";
        }

        private void btn8_Click(object sender, EventArgs e)
        {
            if (digitsOnDisplay < Max_Digits_On_Display)
            {
                txtDisplay.Text += "8";
                digitsOnDisplay++;
            }
        }

        private void btn9_Click(object sender, EventArgs e)
        {
            if (digitsOnDisplay < Max_Digits_On_Display)
            {
                txtDisplay.Text += "9";
                digitsOnDisplay++;
            }
        }

        private void btn0_Click(object sender, EventArgs e)
        {
            if (digitsOnDisplay < Max_Digits_On_Display)
            {
                txtDisplay.Text += "0";
                digitsOnDisplay++;
            }
        }

        private void buttonDecimal_Click(object sender, EventArgs e)
        {
            if (digitsOnDisplay < Max_Digits_On_Display)
            {
                txtDisplay.Text += ".";
                digitsOnDisplay++;
            }
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            if (number1 == 0) 
            {
                number1 = Convert.ToDouble(txtDisplay.Text);
                op = "+";
            }
            else 
            {
                number2 = Convert.ToDouble(txtDisplay.Text);
                op = "+";
            }
            txtDisplay.Text = "";
        }

        private void btnSubtract_Click(object sender, EventArgs e)
        {
             if (number1 == 0) 
            {
                number1 = Convert.ToDouble(txtDisplay.Text);
                op = "-";
            }
            else 
            {
                number2 = Convert.ToDouble(txtDisplay.Text);
                op = "-";
            }
             txtDisplay.Text = "";
        }

        private void btnMultiply_Click(object sender, EventArgs e)
        {
           if (number1 == 0) 
            {
                number1 = Convert.ToDouble(txtDisplay.Text);
                op = "*";
            }
            else 
            {
                number2 = Convert.ToDouble(txtDisplay.Text);
                op = "*";
            }
           txtDisplay.Text = "";
        }

        private void btnDivide_Click(object sender, EventArgs e)
        {
           if (number1 == 0) 
            {
                number1 = Convert.ToDouble(txtDisplay.Text);
                op = "/";
            }
            else 
            {
                number2 = Convert.ToDouble(txtDisplay.Text);
                op = "/";
            }
           txtDisplay.Text = "";
        }

        private void btnResult_Click(object sender, EventArgs e)
        {
            if (number1 == 0) 
                {
                    number1 = Convert.ToDouble(txtDisplay.Text);
                }
            else 
                {
                    number2 = Convert.ToDouble(txtDisplay.Text);
                }
            
            double _resultAsDouble;
            String _resultAsString;
            switch (op)
            {
                case "+":
                    {   
                        _resultAsDouble = number1 + number2;
                        _resultAsString = _resultAsDouble.ToString();
                        txtDisplay.Text = _resultAsString;
                        break;
                    }
                    
                case "-":
                    {
                    _resultAsDouble = number1 - number2;
                        _resultAsString = _resultAsDouble.ToString();
                        txtDisplay.Text = _resultAsString;
                        break;
                    } 
                case "*":
                    {
                    _resultAsDouble = number1 * number2;
                        _resultAsString = _resultAsDouble.ToString();
                        txtDisplay.Text = _resultAsString;
                        break;
                    }
                case "/":
                    { 
                    _resultAsDouble = number1 + number2;
                        _resultAsString = _resultAsDouble.ToString();
                        txtDisplay.Text = _resultAsString;
                        break;
                    }
            }
            number1 = 0;
            number2 = 0;
            op = "";
        }

        private double number1 = 0;
        private double number2 = 0;

        private short digitsOnDisplay = 0;
        private const short Max_Digits_On_Display = 15;
        private String op;

        private void btnClearAll_Click(object sender, EventArgs e)
        {
            txtDisplay.Text = "";
            number1 = 0;
            number2 = 0;
            op = "";
        }
    }
}
Posted

1 solution

As a generic way, you can use the below code:

C#
this.btn1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.btn1_KeyPress); 

private void btn1_KeyPress(object sender, KeyPressEventArgs e)        
{
   if(e.KeyChar()=='1')
   {
     //ur code
   }
}
 
Share this answer
 
Comments
jon-80 19-Feb-12 2:34am    
The code needs to exclude the (), otherwise VS will complain that ..KeyChar(), cannot be used like a method.

<pre>
this.btn1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.btn1_KeyPress);

private void btn1_KeyPress(object sender, KeyPressEventArgs e)
{
if(e.KeyChar=='1')
{
//ur code
}
}
<pre>
Ganesan Senthilvel 19-Feb-12 2:36am    
Great jon_80
jon-80 19-Feb-12 3:12am    
Well, it does not quite work well, somehow, since only the number key 1 seems to work, any idea why?

<pre>

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

namespace TestApplication
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

//initialize keyboard shortcuts (1 to 9, the decimal point, and, multiplication operators (+,-,*,/)
this.btn1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.btn1_KeyPress);
this.btn2.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.btn2_KeyPress);
this.btn3.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.btn3_KeyPress);
this.btn4.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.btn4_KeyPress);
this.btn5.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.btn5_KeyPress);
this.btn6.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.btn6_KeyPress);
this.btn7.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.btn7_KeyPress);
this.btn8.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.btn8_KeyPress);
this.btn9.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.btn9_KeyPress);
this.btn0.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.btn0_KeyPress);
this.btnDecimal.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.btnDecimalPoint_KeyPress);
this.btnAdd.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.btnAdd_KeyPress);
this.btnSubtract.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.btnSubtract_KeyPress);
this.btnMultiply.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.btnMultiply_KeyPress);
this.btnDivide.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.btnDivide_KeyPress);
}

private void btn1_KeyPress(object sender, KeyPressEventArgs e)
{
if(e.KeyChar == 49)
{
btn1.PerformClick();
}
}

private void btn2_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 50)
{
btn2.PerformClick();
}
}

private void btn3_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 51)
{
btn3.PerformClick();
}
}

private void btn4_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 52)
{
btn4.PerformClick();
}
}

private void btn5_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 53)
{
btn5.PerformClick();
}
}

private void btn6_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 54)
{
btn6.PerformClick();
}
}

private void btn7_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 55)
{
btn6.PerformClick();
}
}

private void btn8_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 56)
{
btn1.PerformClick();
}
}
private void btn9_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 57)
{
btn1.PerformClick();
}
}
private void btn0_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 48)
{
btn1.PerformClick();
}
}
private void btnDecimalPoint_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 46)
{
btnDecimal.PerformClick();
}
}
private void btnAdd_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 43)
{
btnDecimal.PerformClick();
}
}
private void btnSubtract_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 45)
{
btnDecimal.PerformClick();
}
}
private void btnMultiply_KeyPress(object sender, KeyPressEventArgs e)
{
i

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900