Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Need help with my calculator program. Trying to use a Keypress event that will a

ID: 3586712 • Letter: N

Question

Need help with my calculator program. Trying to use a Keypress event that will accept numeric input from the keyboard.Please see my code below. I highlighted the area in bold. thank you.

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

namespace Calculator
{
public partial class Form1 : Form
{
private String calculatedNumber; // Stores numbers in string form
private Boolean dot = false; // Falg: to control when a dot can be placed in a number
public Form1()
{
InitializeComponent();
}

private void BtnZero_Click(object sender, EventArgs e) //adds 0 to string
{
calculatedNumber += "0";
LblDisplay.Text=calculatedNumber;
}

private void BtnOne_Click(object sender, EventArgs e) //adds 1 to string
{
calculatedNumber += "1";
LblDisplay.Text = calculatedNumber;
}

private void BtnTwo_Click(object sender, EventArgs e) //adds 2 to string
{
calculatedNumber += "2";
LblDisplay.Text = calculatedNumber;
}

private void BtnThree_Click(object sender, EventArgs e) //adds 3 to string
{
calculatedNumber += "3";
LblDisplay.Text = calculatedNumber;
}

private void BtnFour_Click(object sender, EventArgs e) //adds 4 to string
{
calculatedNumber += "4";
LblDisplay.Text = calculatedNumber;
}
private void button5_Click(object sender, EventArgs e) //adds 5 to string
{
calculatedNumber += "5";
LblDisplay.Text = calculatedNumber;
}
private void BtnSix_Click(object sender, EventArgs e) //adds 6 to string
{
calculatedNumber += "6";
LblDisplay.Text = calculatedNumber;
}

private void BtnSeven_Click(object sender, EventArgs e) //adds 7 to string
{
calculatedNumber += "7";
LblDisplay.Text = calculatedNumber;
}

private void BtnEight_Click(object sender, EventArgs e) //adds 8 to string
{
calculatedNumber += "8";
LblDisplay.Text = calculatedNumber;
}

private void BtnNine_Click(object sender, EventArgs e) //adds 9 to string
{
calculatedNumber += "9";
LblDisplay.Text = calculatedNumber;
}

private void BtnDot_Click(object sender, EventArgs e) //adds . to string
{
if (!dot)
{
calculatedNumber += ".";
dot = true;
}

LblDisplay.Text = calculatedNumber;
}

private void BtnAdd_Click(object sender, EventArgs e)
{
//addition button
}

private void BtnSub_Click(object sender, EventArgs e)
{
//subtraction button
}

private void BtnDiv_Click(object sender, EventArgs e)
{
//divide button
}
private void button15_Click(object sender, EventArgs e)
{
//multiply button
}

private void BtnEqt_Click(object sender, EventArgs e)
{
//equals button
}

private void BtnClear_Click(object sender, EventArgs e) //resets the string to blank
{
calculatedNumber = "";
LblDisplay.Text = calculatedNumber;
dot = false;
}

private void BtnBack_Click(object sender, EventArgs e)
{
// reset dot if removed
if (!LblDisplay.Text.Equals(""))
{
//if most right char is a . (dot) then reset flag
if ((LblDisplay.Text.ToString())[LblDisplay.Text.Length-1] == '.')
dot = false;
// go ahead and remove last char
LblDisplay.Text = calculatedNumber = LblDisplay.Text.Remove(LblDisplay.Text.Length - 1);
}
}

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
//LblDisplay.Text += e.KeyChar.ToString();
int i = e.KeyChar;
if (i >= 48 && i <= 57)
{
}
else
{
MessageBox.Show("You Can Only Enter A Number!");
e.Handled = true;
}

}

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
//LblDisplay.Text += e.KeyCode.ToString();
}

private void Form1_Load(object sender, EventArgs e)
{
this.KeyPreview = true;
}
}
}

Explanation / Answer

Hi,
You dont need to depend on ASCII values for this, c# already provides isDigit support, you can use it like this,
Char.IsDigit(e.KeyChar) this functions takes in a string and returns 1 if its a digit and 0 otherwise

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
if (Char.IsDigit(e.KeyChar))

else
{
MessageBox.Show("You Can Only Enter A Number!");
e.Handled = true;
}

}

Thumbs up if this was helpful, otherwise let me know in comments

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote