我如何使用和实现一个MaskedTextBox到我的计算器应用程序?c#
本文关键字:我的 MaskedTextBox 计算器 应用程序 一个 何使用 实现 | 更新日期: 2023-09-27 17:49:24
所以我正在C-Sharp做一个计算器应用程序,我想防止人们一次输入超过1个周期/点。所以他们不能输入"....."或"1.."1"或"1.1.1"就是这样的东西....我还想通过键盘输入字母字符来防止他们添加字母字符,如"a, b, c"。
我被告知使用一个MaskedTextBox,我想知道这是正确的。此外,如果它是正确的,我将如何实现它到我的代码?当谈到c#时,我是一个完全的初学者,所以我想要一些帮助(对于初学者来说是温和的)。
到目前为止,我写的代码是: double total1 = 0;
double total2 = 0;
public Form1()
{
InitializeComponent();
}
private void btnOne_Click(object sender, EventArgs e)
{
txtDisplay.Text = txtDisplay.Text + btnOne.Text;
}
private void btnTwo_Click(object sender, EventArgs e)
{
txtDisplay.Text = txtDisplay.Text + btnTwo.Text;
}
private void btnThree_Click(object sender, EventArgs e)
{
txtDisplay.Text = txtDisplay.Text + btnThree.Text;
}
private void btnFour_Click(object sender, EventArgs e)
{
txtDisplay.Text = txtDisplay.Text + btnFour.Text;
}
private void btnFive_Click(object sender, EventArgs e)
{
txtDisplay.Text = txtDisplay.Text + btnFive.Text;
}
private void btnSix_Click(object sender, EventArgs e)
{
txtDisplay.Text = txtDisplay.Text + btnSix.Text;
}
private void btnSeven_Click(object sender, EventArgs e)
{
txtDisplay.Text = txtDisplay.Text + btnSeven.Text;
}
private void btnEight_Click(object sender, EventArgs e)
{
txtDisplay.Text = txtDisplay.Text + btnEight.Text;
}
private void btnNine_Click(object sender, EventArgs e)
{
txtDisplay.Text = txtDisplay.Text + btnNine.Text;
}
private void btnZero_Click(object sender, EventArgs e)
{
txtDisplay.Text = txtDisplay.Text + btnZero.Text;
}
private void btnClear_Click(object sender, EventArgs e)
{
txtDisplay.Clear();
}
private void btnPlus_Click(object sender, EventArgs e)
{
total1 = total1 + double.Parse(txtDisplay.Text);
txtDisplay.Clear();
}
private void btnEquals_Click(object sender, EventArgs e)
{
total2 = total1 + double.Parse(txtDisplay.Text);
txtDisplay.Text = total2.ToString();
total1 = 0;
}
private void btnPoint_Click(object sender, EventArgs e)
{
txtDisplay.Text = txtDisplay.Text + btnPoint.Text;
}
private void label1_Click(object sender, EventArgs e)
{
}
private void txtDisplay_TextChanged(object sender, EventArgs e)
{
}
}
所以我问…我如何/在哪里添加这个"MaskedTextBox"-如果这是正确的?我如何实现它?是什么让它起作用的?
谢谢!
您不需要MaskedTextBox
,因为您正在用按钮模拟键盘。在btnPoint_Click
:
private void btnPoint_Click(object sender, EventArgs e)
{
if (!txtDisplay.Text.Contains("."))
{
txtDisplay.Text = txtDisplay.Text + btnPoint.Text;
}
}
除了MusiGenesis的代码片段,您还可以使用文本框的KeyPress事件来防止非数字和多个句号。
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if(char.IsDigit(e.KeyChar) || ((e.KeyChar == '.' && textBox1.Text.IndexOf(".") < 0) ) )
{
textBox1.Text += e.KeyChar;
}
e.Handled = true;
}
或将文本框的"ReadOnly
属性"设置为"true
"。
如果你只编写一次点击事件的代码,并将每个数字按钮的点击事件处理程序分配给它,你也可以节省大量的代码:
private void btnNumber_Click(object sender, EventArgs e)
{
if (sender is Button)
txtDisplay.Text = txtDisplay.Text + ((Button)sender).Text;
}
因此您可以保存以下所有方法
private void btnZero_Click(object sender, EventArgs e) (...)
private void btnOne_Click(object sender, EventArgs e) (...)
.
.
.
private void btnNine_Click(object sender, EventArgs e) (...)