我对我正在进行的小型练习计划有疑问。我几乎没有使用C#的经验,也没有使用Visual Basic的一点经验。我遇到的问题只与文本框中的数字有关。我成功地在另一个程序中这样做了,但由于某种原因它不能使用相对相同的代码。 这是代码:
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 WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnCalculate_Click(object sender, EventArgs e)
{
Double TextBoxValue;
TextBoxValue = Convert.ToDouble(txtMinutes.Text);
TextBoxValue = Double.Parse(txtMinutes.Text);
{
Double Answer;
if (TextBoxValue > 59.99)
{
Answer = TextBoxValue / 60;
}
else
{
Answer = 0;
}
{
lblAnswer.Text = Answer.ToString();
}
}
}
private void txtHours_KeyPress(object sender, KeyPressEventArgs e)
{
if (char.IsNumber (e.KeyChar) && Char.IsControl(e.KeyChar))
{
e.Handled = true;
}
}
}
}
如果我的代码中有其他错误,此处的任何人都可以纠正我,那也是值得赞赏的。提前谢谢。
答案 0 :(得分:4)
你的支票倒了。你的代码所做的是取消输入,如果新字符是一个数字,如果它是一个控制字符。
if (!char.IsNumber(e.KeyChar) && !Char.IsControl(e.KeyChar))
e.Handled = true;
答案 1 :(得分:1)
你的逻辑错误。它声明“如果按下的键是一个数字和一个控制字符..那么我已经处理了它”。你想要的是“如果按下的键是不一个数字,我已经处理了它。”
if (!char.IsNumber(e.KeyChar)) {
// ...
答案 2 :(得分:1)
private void txtHours_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar)
&& !char.IsDigit(e.KeyChar)
&& e.KeyChar != '.')
e.Handled = true;
// only allow one decimal point
if (e.KeyChar == '.'
&& (txtHours).Text.IndexOf('.') > -1)
e.Handled = true;
}