2011-06-27 18 views
-4

私は現時点で私を回避している簡単な質問。浮動小数点数を解析するには、下の2行が必要です。これらの2行で私はこれを得る:エラー1暗黙のうちに 'test.Form1.ore'を 'string'に変換することはできない。だから私はテキストボックスをパースして浮動小数点数を解析し、それがテキストボックスに渡されるので、誰かが私に欠けているものを見せることができます。parse float to text box

textBox3.Text = books[0]; // update the first text 
textBox4.Text = books[1]; // update the second text 

私はこの

textBox4.Text = float.Parse(books[1]); //update the second text 

を試みたが、それは参照

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.IO; 
using System.Runtime.Serialization.Formatters.Binary; 

namespace test 
{ 

public partial class Form1 : Form 
{ 
    [Serializable] 
    public class ore 
    { 
     public float Titan; 
     public float Eperton; 
    } 
    ore b1 = null; 
    ore b2 = null; 



    public Form1() 
    { 
     InitializeComponent(); 

     b2 = new ore(); 
     b1 = new ore(); 
    } 

    private void textBox1_TextChanged(object sender, EventArgs e) 
    { 

     float tempFloat; 


     if (float.TryParse(textBox1.Text, out tempFloat)) 
     { 
      b1.Titan = tempFloat; 
     } 
     else 
      MessageBox.Show("uh oh"); 



    } 


    private void textBox2_TextChanged(object sender, EventArgs e) 
    { 
     float tempFloat; 
     if (float.TryParse(textBox1.Text, out tempFloat)) 
     { 
      b2.Eperton = tempFloat; 
     } 
     else 
      MessageBox.Show("uh oh"); 


    } 


    private void button1_Click(object sender, EventArgs e) 
    { 
     List<ore> oreData = new List<ore>(); 
     oreData.Add(b1); 
     oreData.Add(b2); 

     FileStream fs = new FileStream("ore.dat", FileMode.Create); 
     BinaryFormatter bf = new BinaryFormatter(); 
     bf.Serialize(fs, oreData); 
     fs.Close(); 
    } 

    private void textBox3_TextChanged(object sender, EventArgs e) 
    { 

    } 

    private void textBox4_TextChanged(object sender, EventArgs e) 
    { 

    } 

    List<ore> books = new List<ore>(); 
    private void button2_Click(object sender, EventArgs e) 
    { 
     FileStream fs = new FileStream("ore.dat", FileMode.Open); 
     BinaryFormatter bf = new BinaryFormatter(); 
     List<ore> books = (List<ore>)bf.Deserialize(fs); 
     fs.Close(); 

     if (books.Count > 1) 
     { 
      textBox3.Text = float.Parse(books[0]).ToString();//update the first text 
      textBox4.Text = float.Parse(books[1]).ToString(); 
      //update the second text 
     } 
    } 
} 

}

+0

「うまくいかない」とはどういう意味ですか?エラーメッセージが表示されましたか?外人が空から降りてきたのですか? –

+0

「それはうまくいかない」とはどういう意味ですか?どの部分がうまくいかなかったのですか?間違いましたか?間違った価値観がありますか?あなたのコンピュータは爆発しましたか? –

+0

im sorryエラー 'float.Parse(string)'に最適なオーバーロードされたメソッドが無効な引数を持っています\tは新しいコードのエラーメッセージです – doc

答えて

0

textBox4.Text必要とのためのすべてのコードを追加し

いずれも動作しませんでしたあなたはそれに文字列を割り当てます。あなたはフロートを割り当てています。 float という文字列で表示する必要がある場合は、ToStringメソッドを使用してください。

textBox4.Text = float.Parse(books[1]).ToString(); 
+0

そのコードは冗長です。 'float.Parse'は、' ToString() 'メソッドを呼び出すことによって直ちに* back *を文字列に変換する' string'型のパラメータを受け入れます。文字列を直接割り当てるだけで、解析や変換は必要ありません。 –

+0

@Cody:ええ、論理も私を混乱させる。しかし、OPはどんなタイプの本があるかを言わなかったので、私は仮定しました...まあ私は推測し、あなたは彼らがそれについて何を言うのか知っています。 –

+0

大丈夫もう一度私は混乱のために申し訳ありません私は見られるようにコードのページ全体を追加しました。 @Codyグレイ私はあなたが私はこれが必要になります:textBox4.Text = books [1] .ToString(); – doc

0

テキストボックスの内容を数値に変換する場合は、コードを逆順に書きます。

これで、テキストボックスのTextプロパティにfloat.Parseメソッドの戻り値を割り当てようとしました。関数はfloatを返し、Textプロパティはstringを返すので、これはうまくいきません。

代わりに、books[1]に含まれる文字列値を解析するために、あなたがこれを書く必要があります。

float myValue = float.Parse(books[1])); 

そして、あなたがテキストボックスに表示できる文字列にfloatを変換するために、あなたはこれを書く必要があります。

textBox4.Text = books[1].ToString(); 
+0

私は何をしようとしていますか?テキストボックス1のリスト内の最初の変数など、リスト内のすべての変数を使用すると、これを行う方法を把握したら合計が9個になります。 – doc

+0

私が理解しているように更新されたコード:if(books.Count> 1) { float titan = float.Parse(books [0])); float eperton = float.Parse(本[1])); textBox3.Text = titan.ToString(); //最初のテキストボックスを更新します textBox4.Text = eperton.ToString(); // 2番目のテキストボックスを更新します } .....これはエラーになります:エラー引数1: 'test.Form1.ore'から 'string'に変換できません – doc

1

"解析"は、文字列(テキスト)を浮動小数点数や整数などの特定の値型に処理することを意味します。これはではなく、です。実際には、あなたは逆をする必要があります:他の値の文字列表現を取得します。

テキストボックスに文字列以外の値を割り当てるには、単にToString()メソッドを呼び出します。

double dbl = 0; 
MyTextBox.Text = dbl.ToString();