0

这就是我在 xaml 中为我的文本框所拥有的。

<TextBox x:Name="number1" HorizontalAlignment="Left" Height="85" Margin="115,239,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="328" FontSize="60" TextAlignment="Center"/>

这就是我必须从文本框中获取文本的内容:

void Simple_Calculator_4_Kids::MainPage::add_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
String^ str1 = txtNumberToMultiply->Text; 
wstring ws1( str1->Data());
wstringstream convertor; 
double ws1_d;
convertor << ws1; 
convertor >> ws1_d; 
ws1_d = ws1_d + 2.2; 
}

我不明白如何添加一种方法来验证文本框中的内容实际上是双精度而不是一串字母或为空。我将如何继续添加一种方法来验证文本框中的内容是否为双精度?这是使用 C++ 使用 Visual Studio 2012 for Windows 8 应用程序。

4

2 回答 2

0

我花了一段时间才弄清楚 wstring 如何使用 char16 保持其输入,所以我编写了这段代码。它只检查句点和数字。

bool isValidInput(String^ str){
    int decimalX = 0;
    wstring ws(str->Data());
    int strSize = ws.length();
    if(strSize<1)
        return false;
    else{
        for(int i=0;i<strSize;i++){
            if(ws[i]==46||ws[i]==48||ws[i]==49||ws[i]==50||ws[i]==51||ws[i]==52||ws[i]==53||ws[i]==54||ws[i]==55||ws[i]==56||ws[i]==57){
                if(ws[i]==46){
                    decimalX++;
                    if(decimalX>1)
                        return false;
                }
            }
            else
                return false;
        }
        return true;
    }
}
于 2013-02-10T18:00:35.353 回答
0

使用 C 运行时库中的 strtod(将字符串转换为双精度值)。根据文档,针对函数测试您的文本输入并检查错误。通过 C++ 和 CRT 支持 Windows Store 应用程序的 strtod(和朋友)。

http://msdn.microsoft.com/en-us/library/kxsfc1ab(v=vs.110).aspx

于 2013-02-08T00:38:10.767 回答