1

私はスペイン人なので英語が苦手なので、何かわからないことがあれば翻訳機を使っています。

私の問題は、メインウィンドウに2つのウィンドウがあるプログラムを実行していることです.2番目のウィンドウにデータグリッドがあります.テキストボックスで情報を渡します.問題は、金額を掛けて合計価格を渡すことで、価格のデザートが得られることです.デザートの場合、その価格の周りを渡したときのデータグリッドの合計価格、価格が1.20になった場合、プログラムは1に変更されます.

エラーが発生しないので、プログラム コード全体を無駄にする必要があります。

これは2番目のウィンドウです

private void Window_Loaded(object sender, RoutedEventArgs e)
{
   if (Application.Current.Properties["seleccionado"] == null)
   {
       textBox1.IsEnabled = false;
       Postresinfo = new TabladePostre();
   }
   else
   {

        Postresinfo = (TabladePostre) (Application.Current.Properties["seleccionado"]);
        textBox1.IsEnabled=false;
        textBox1.Text = Convert.ToString(Postresinfo.refPostre);
        textBox2.Text = Postresinfo.NombrePostre;
        textBox3.Text = Convert.ToString(Postresinfo.cantidad);
        textBox4.Text = Convert.ToString(Postresinfo.precio);
        textBox5.Text = Convert.ToString(Postresinfo.preciototal);

    }
    LinqdePostresDataContext BasedeDatos;


    string filename = "";
    private void button1_Click(object sender, RoutedEventArgs e)
    {
BasedeDatos(LinqdePostresDataContext)Application.Current.Properties["basedeDatos"];

    Postresinfo.NombrePostre = textBox2.Text;
    Postresinfo.cantidad = Convert.ToInt32(textBox3.Text);
    Postresinfo.precio = Convert.ToDecimal(textBox4.Text);
    Postresinfo.preciototal = Convert.ToDecimal(textBox5.Text);
    Postresinfo.imagen = filename;

    if (Application.Current.Properties["seleccionado"] != null)
    {
       Postresinfo.refPostre=Convert.ToInt32(textBox1.Text);
    }
    else
    {
       BasedeDatos.TabladePostres.InsertOnSubmit(Postresinfo);
    }
        BasedeDatos.SubmitChanges();
        this.Close();

    }
    decimal precio = 0;


    private void button2_Click(object sender, RoutedEventArgs e)
    {
        precio = Convert.ToDecimal(textBox4.Text);
        textBox5.Text = Convert.ToString(precio * Convert.ToDecimal(textBox3.Text));


    }

    private void button9_Click(object sender, RoutedEventArgs e)
    {
        // Configure open file dialog box
        Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
        dlg.FileName = "Document"; // Default file name
        dlg.DefaultExt = ".jpg"; // Default file extension
        dlg.Filter = "Text documents (.jpg)|*.jpg"; // Filter files by extension 

        // Show open file dialog box
        Nullable<bool> result = dlg.ShowDialog();

        // Process open file dialog box results 
        if (result == true)
        {
            // Open document 
            filename = dlg.FileName;
            ImageSourceConverter conversor = new ImageSourceConverter();
            image1.Source = (ImageSource)conversor.ConvertFromString(filename);
        }
    }

これがメイン ウィンドウです。

LinqdePostresDataContext BasedeDatos = new LinqdePostresDataContext();

private void activar(object sender, RoutedEventArgs e)
{

   Cargartabla();
}

private void Cargartabla()
{
   var postre = (from n in BasedeDatos.TabladePostres
                 select n);
    dataGrid1.ItemsSource = postre;
}

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        Application.Current.Properties["seleccionado"] = null;
        Ventana2 Ventana2 = new Ventana2();
        Ventana2.Show();
    }

    private void button2_Click(object sender, RoutedEventArgs e)
    {
      BasedeDatos.TabladePostres.DeleteOnSubmit((TabladePostre)dataGrid1.SelectedItem);
      BasedeDatos.SubmitChanges();
      Cargartabla();
    }

    private void Activar2(object sender, EventArgs e)
    {
        Cargartabla();
    }

    private void button3_Click(object sender, RoutedEventArgs e)
    {
   Application.Current.Properties["seleccionado((TabladePostre)dataGrid1.SelectedItem);
        Application.Current.Properties["basedeDatos"] = BasedeDatos;
        Ventana2 ventana2 = new Ventana2();
        ventana2.Show();
    }

知っておく必要がある場合は、int 価格、10 進数の合計価格の int 数量のデータベースがあります。

返信ありがとうございます。両方のオプションを試してみましたが、機能しません。これらは欠点です。

Postresinfo.refPostre = float.Parse (textBox1.Text) はエラーを出さず、プログラムは正常に実行され、何も変化しません

float.TryParse (textBox1.Text、out Postresinfo.refPostre) には次の障害があります。

エラー 1 プロパティ、インデクサー、または動的メンバー アクセスを out または ref パラメーターとして渡すことはできません。

エラー 2 'float.TryParse (string, out float)' に最適なオーバーロードされたメソッド マッチには無効な引数が含まれています

エラー 3 引数 2: 'out int' から 'float out' に変換できません

他のコードを試してみましたが、何も変わりません。プログラムは正常に実行されます

シェーン今、私はこのコードを試しました:

Convert.ToDecimal (textBox1.Text);

しかし、それは何も変更せず、正常に実行されます。

他のコードも試しましたが、何も変わらず、プログラムは正常に実行されます

障害はtextbox1ではありません。価格を10進数で入力してデータグリッドに渡し、丸められたTextBox5テキストボックスにあるためだと思います

また、失敗した列を添付します。

<DataGridTextColumn Binding="{Binding Path=preciototal}" Header="Precio Total"/>

データグリッド

ありがとう。

4

2 に答える 2

0

あなたの問題は、「1.20」のような価格を int with に変換していることですConvert.ToInt32(textBox1.Text);

Postresinfo.refPostre小数に変更して使用してみてください。スローされる可能性があるConvert.ToDecimal(textBox1.Text);ため、次のようなものを使用してください。FormatException

try
{
    Convert.ToDecimal(textBox1.Text);
}
catch (Exception)
{
    //Deal with Error
}
于 2013-08-19T11:53:21.603 に答える
0

ここにたくさんのコードがありますが、何が問題なのかわかりません。ラウンド値を取得することは理解していますが、それが発生するテキストボックスの名前を言及すると役立ちます。

私はこのコードを見ました:

Postresinfo.refPostre=Convert.ToInt32(textBox1.Text);

inbutton1_Clickの値textBox1.Textが float の場合、丸めが発生します。

やったほうがいい

Postresinfo.refPostre=float.Parse(textBox1.Text);

また

float.TryParse(textBox1.Text, out Postresinfo.refPostre);

これはテキストボックスであり、数値ではない値を取得する可能性があるためです。使用することにした場合は、使用Parseする必要があります

try
{
   Postresinfo.refPostre=float.Parse(textBox1.Text);
}
catch
{
   // Show a message or write to log or simething
}
于 2013-08-19T11:53:26.567 に答える