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; 
}

テキストボックスの内容が実際には double であり、文字列ではないか、空であることを検証する方法を追加する方法がわかりません。テキストボックスの内容が二重であることを検証する方法を追加するにはどうすればよいですか? これは、Windows 8 アプリ用の Visual Studio 2012 を使用して C++ を使用しています。

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 を使用します (文字列を倍精度値に変換します)。ドキュメントに従って、テキスト入力を関数に対してテストし、エラーをチェックします。strtod (およびその仲間) は、C++ および CRT を介して Windows ストア アプリでサポートされています。

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

于 2013-02-08T00:38:10.767 に答える