我如何只接受 C# Xamarin 中的数字

Kyl*_*yle 5 c# ios xamarin

我是 Xamarin 的 C# 新手。我使用 Visual Studio for Mac Preview 来处理 iOS 应用程序。在制作基本计算器时,我不知道如何不接受不是数字的答案。例如在我的文本框中,如果我输入了一封信,我想要一个错误说

“请输入一个数字”。

我不知道为什么我收到错误,但它不起作用。

当我运行它并输入一个数字时,它每次都默认为 else 语句。还有字母。当我在里面放太多字母时它会崩溃。

    partial void AddButton_TouchUpInside(UIButton sender)
    {
        double number1 = 0.00;
        double answer = 0.00;
        double number2 = 0.00;

        int value;
        string input = Console.ReadLine();
        if (Int32.TryParse(input, out value))
        {
            number1 = double.Parse(Number1TextBox.Text);
            number2 = double.Parse(Number2TextBox.Text);
            answer = number1 + number2;
            AnswerLabel.Text = "The answer is: " + answer.ToString();                             
        }
        else
        {

            InvalidLabel.Text = "Please enter a Numeric Digit";
        }
    }   
Run Code Online (Sandbox Code Playgroud)

xle*_*eon 3

我认为问题是string input = Console.ReadLine(); 为什么您期望该语句得到正确的值?这对于控制台程序有效,但您正在运行 iOS 应用程序。

类似这样的事情是有道理的:

string input = YourTextInput.Text;
Run Code Online (Sandbox Code Playgroud)

如果要将文本输入限制为带有数字的键盘,请使用以下命令:

YourTextInput.KeyboardType = UIKeyboardType.NumberPad;
Run Code Online (Sandbox Code Playgroud)

还有一件事。如果答案应该是 a double,您应该使用double.TryParse(input, out value)而不是 int 。

那这个呢?

double number1 = 0.00;
double answer = 0.00;
double number2 = 0.00;

if (double.TryParse(Number1TextBox.Text, out number1)
    && double.TryParse(Number2TextBox.Text, out number2))
{
    answer = number1 + number2;
    AnswerLabel.Text = "The answer is: " + answer.ToString();                             
}
else
{
    InvalidLabel.Text = "Please enter a Numeric Digit";
}
Run Code Online (Sandbox Code Playgroud)

您仍然需要验证输入的数字,因为数字键盘允许输入多个小数点。