2016-04-11 6 views
1

私はC#とアプリケーションの開発を初めて行っています。私はリストビューにあるValueをユーザーがテキストボックスに入力した数で乗算しようとしています。私のコードは、以下である:実行時の合計値数量を掛けて記録する方法C#

<TextBox x:Name="Totaltxt" HorizontalAlignment="Left" Height="45" Margin="250,461,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="140" TextChanged="Totaltxt_TextChanged" Text="{Binding TotalValue}" /> 

エラーを表示し、各項目の値

<TextBox Grid.Column="0" Text="{Binding Value}" IsReadOnly="True" FontSize="15" /> 

テキストボックスを表示するリストビューで

protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 
     Menu.PassedData data = e.Parameter as Menu.PassedData; 

     if (data != null) //If data is not 0 
     { 
      PassedData.Add(data); //Increment data in list view 

      double tempTotalValue = 0; 
      foreach (var record in PassedData) 
      { 
       tempTotalValue = tempTotalValue + record.Value; 
       Totaltxt.Text = String.Format(new CultureInfo("en-GB"),"{0:C}", tempTotalValue); 

       textBox3.Text = string.Format("{0:Q2}", record.Value * double.Parse(quanttextBox.Text)); //The code to multiply user input of quantity by each Value produced 
      } 

      TotalValue = tempTotalValue; 
     } 
    } 

テキストボックス

私がやろうとしています何
An exception of type 'System.FormatException' occurred in mscorlib.ni.dll but was not handled in user code 

Troublshootingのヒント

When converting a string to datetime, parse the string before putting each variable in the date and time object 

は、ユーザ入力によって、リストビューで生成された各項目の値を乗算し、totalvalueをそう基本的に数量*各それに応じて更新するためのものですリストビューの値。この質問が理にかなったことを願ってください。

+0

エラーメッセージとは何ですか? doubleは '0.0 'に初期化する必要があります。 たとえば' var mytype = 2.0m; m = 10進数 '' var mytype = 2.0d; d = Double'' var mytype = 2.0f; f = Float'コードをデバッグしているときに何が起こるか教えてください。 – MethodMan

+0

'double.Parse(quanttextBox.Text)'を別に使用してデバッグできますか? 'quanttextBox.Text'の値が何であるかを示すことができますか? – Valentin

+0

質問がエラーメッセージとトラブルシューティングのヒントで更新されました。 –

答えて

0

あなたは計算にそれを使用しようとする前に、ローカル変数にユーザー入力の変換を行って、より安全になります:ユーザーがあなたのコードが勝った有効な数値を入力しない場合、

double result; 
if (double.TryParse(quanttextBox.Text, out result)) 
{ 
    textBox3.Text = (record.Value * result).ToString(); 
} 

失敗する。

しかし、あなたのバグの原因は、結果がダブルではなくDateTimeであるかのようにフォーマットしようとしているようです。

+0

こんにちは、ありがとうございます。乗算はうまくいった!ただし、リストビューの最初のレコードに対してのみ機能します。数量のリストビューを別に作成する必要がありますか?アイテムが選択されるたびにテキストボックスを増やしたいので、リストビュー内の各アイテムを掛けることができますか? –

+0

@SmithSunny - 実行中の合計に結果を追加する必要があります – ChrisF

+0

どういう意味ですか?ランニングトータル? –

関連する問題