I'm trying to do a calculator and all I have to do is make it work with the keyboard. This should work but it doesn't.
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.D1)
{
resultarea.Text = "fgdgd";
//number(1);
}
....
}
Any idea what could have gone wrong?
Edit: it's still not working. I figured I might aswell post the whole code.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
KeyPreview = true;
}
double first = 0;
double second = 0;
string op = "";
bool last = true;
public void calculate()
{
double aux = first;
first = second;
if (op == "+")
second = aux + second;
else if (op == "-")
second = aux - second;
else if (op == "*")
second = aux * second;
else if (op == "/")
if (second == 0)
{ first = aux; viewarea.Text = "Cannot divide by zero"; }
else
second = aux / second;
//if (viewarea.Text == "Cannot divide by zero")
resultarea.Text = second.ToString();
}
public void number(int digit)
{
if (last == true)
{
resultarea.Clear();
last = false;
first = second;
second = 0;
}
resultarea.Text += digit.ToString();
second = second * 10 + digit;
}
public void sign(string sign)
{
if (last==false && (first != 0 && second != 0))
calculate();
op = sign;
debug.Text = op;
last = true;
}
private void equal_Click(object sender, EventArgs e)
{
if (last == false && (first != 0 && second !=0 ))
calculate();
op = "";
last = true;
}
private void one_Click(object sender, EventArgs e)
{
number(1);
}
private void two_Click(object sender, EventArgs e)
{
number(2);
}
private void plus_Click(object sender, EventArgs e)
{
sign("+");
}
private void minus_Click(object sender, EventArgs e)
{
sign("-");
}
private void three_Click(object sender, EventArgs e)
{
number(3);
}
private void creset_Click(object sender, EventArgs e)
{
first = 0;
second = 0;
op = "";
last = true;
viewarea.Text = "";
resultarea.Text = "";
debug.Text = "";
}
private void four_Click(object sender, EventArgs e)
{
number(4);
}
private void five_Click(object sender, EventArgs e)
{
number(5);
}
private void six_Click(object sender, EventArgs e)
{
number(6);
}
private void seven_Click(object sender, EventArgs e)
{
number(7);
}
private void eight_Click(object sender, EventArgs e)
{
number(8);
}
private void nine_Click(object sender, EventArgs e)
{
number(9);
}
private void zero_Click(object sender, EventArgs e)
{
number(0);
}
private void divide_Click(object sender, EventArgs e)
{
sign("/");
}
private void times_Click(object sender, EventArgs e)
{
sign("*");
}
private void sqr_Click(object sender, EventArgs e)
{
second = Math.Sqrt(second);
resultarea.Text = second.ToString();
}
private void cos_Click(object sender, EventArgs e)
{
second = Math.Cos(second);
resultarea.Text = second.ToString();
}
private void sin_Click(object sender, EventArgs e)
{
second = Math.Sin(second);
resultarea.Text = second.ToString();
}
private void tan_Click(object sender, EventArgs e)
{
second = Math.Tan(second);
resultarea.Text = second.ToString();
}
private void nfac_Click(object sender, EventArgs e)
{
double aux = second;
if (second == 0)
aux = 1;
else
for (double i = 1; i < second; i++)
aux= aux*i;
second = aux;
resultarea.Text = second.ToString();
}
private void log_Click(object sender, EventArgs e)
{
second = Math.Log(second);
resultarea.Text = second.ToString();
}
private void ln_Click(object sender, EventArgs e)
{
second = Math.Log10(second);
resultarea.Text = second.ToString();
}
private void xexp_Click(object sender, EventArgs e)
{
second = Math.Pow(second ,2);
resultarea.Text = second.ToString();
}
private void dot_Click(object sender, EventArgs e)
{
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.D1 || e.KeyCode == Keys.NumPad1)
{
viewarea.Text = "fgdgd";
//number(1);
}
else if (e.KeyCode == Keys.D2 || e.KeyCode == Keys.NumPad2)
{
number(2);
}
else if (e.KeyCode == Keys.D3 || e.KeyCode == Keys.NumPad3)
{
number(3);
}
else if (e.KeyCode == Keys.D4 || e.KeyCode == Keys.NumPad4)
{
number(4);
}
else if (e.KeyCode == Keys.D5 || e.KeyCode == Keys.NumPad5)
{
number(5);
}
else if (e.KeyCode == Keys.D6 || e.KeyCode == Keys.NumPad6)
{
number(6);
}
else if (e.KeyCode == Keys.D7 || e.KeyCode == Keys.NumPad7)
{
number(7);
}
else if (e.KeyCode == Keys.D8 || e.KeyCode == Keys.NumPad8)
{
number(8);
}
else if (e.KeyCode == Keys.D9 || e.KeyCode == Keys.NumPad9)
{
number(9);
}
else if (e.KeyCode == Keys.Divide)
{
sign("/");
}
else if (e.KeyCode == Keys.Subtract)
{
sign("-");
}
else if (e.KeyCode == Keys.Add)
{
sign("+");
}
else if (e.KeyCode == Keys.Enter)
{
sign("=");
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
The keydown() is an inbuilt method in jQuery which is used to trigger the keydown event whenever User presses a key on the keyboard. If the key is kept pressed, the event is sent every time the operating system repeats the key. So, Using keydown() method we can detect if any key is on its way down.
There is no such best practice. Both are used as per the need of your program and as per the convenience of the user. keyup Fires when the user releases a key, after the default action of that key has been performed. keydown Fires when the user depresses a key.
keydown – fires when any key is pressed down, fires first, and always before the browser processes the key (e.g. inserting text, moving focus, etc). keypress – fires when a key that produces a character value is pressed down, fires after keydown , and before the browser processes the key.
kbhit() is present in conio. h and used to determine if a key has been pressed or not. To use kbhit function in your program you should include the header file “conio. h”.
Assuming you have a WinForms project, set the KeyPreview
property of your form to true, like that (e.g. in the constructor) :
public Form1()
{
InitializeComponent();
KeyPreview = true;
}
and it should work like you expected.
Edit: Due to your comment I've added the code to catch all the signs (add that to your Form1_KeyDown method)
if (((e.KeyCode == Keys.D7) && (e.Modifiers == Keys.Shift)) || (e.KeyCode == Keys.Divide))
{
sign("/");
}
else if (((e.KeyCode == Keys.Oemplus) && (e.Modifiers == Keys.Shift)) || (e.KeyCode == Keys.Multiply))
{
sign("*");
}
else if ((e.KeyCode == Keys.OemMinus) || (e.KeyCode == Keys.Subtract))
{
sign("-");
}
else if ((e.KeyCode == Keys.Oemplus) || (e.KeyCode == Keys.Add))
{
sign("+");
}
else if (e.KeyCode == Keys.Enter)
{
sign("=");
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With