разобрать поплавок в текстовое поле - PullRequest
0 голосов
/ 27 июня 2011

простой вопрос, который уклоняется от меня на данный момент. Мне нужно 2 строки ниже, чтобы разобрать, чтобы плавать.с этими 2 строками я получаю это: Ошибка 1 Не могу неявно преобразовать тип 'test.Form1.ore' в 'string'.поэтому я разбираю текстовые поля для всплытия, так как именно это будет передано текстовым полям, может кто-нибудь показать мне, чего мне не хватает.

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

}

Ответы [ 3 ]

1 голос
/ 27 июня 2011

«Анализ» означает обработку строки (текста) в конкретный тип значения, такой как число с плавающей запятой или целое число. Это не , что вам нужно. На самом деле вам нужно сделать наоборот: получить строковое представление какого-либо другого значения.

Чтобы присвоить нестроковое значение текстовому полю, просто вызовите метод ToString().

double dbl = 0;
MyTextBox.Text = dbl.ToString();
0 голосов
/ 27 июня 2011

Если вы хотите преобразовать содержимое текстового поля в число, вы написали код в обратном порядке.

То, что у вас сейчас есть, пытается присвоить возвращаемое значение метода float.Parse свойству Text вашего текстового поля. Конечно, это не работает, потому что функция возвращает float, а свойство Text ожидает string.

Вместо этого, чтобы проанализировать строковое значение, содержащееся в books[1], вы должны написать это:

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

И чтобы преобразовать float в строку, которую вы можете отобразить в текстовом поле, вы должны написать это:

textBox4.Text = books[1].ToString();
0 голосов
/ 27 июня 2011

textBox4.Text требует, чтобы вы присвоили ему строку. Вы назначаете это поплавком. Если вам нужно отобразить число с плавающей точкой как строку, просто используйте метод ToString.

textBox4.Text = float.Parse(books[1]).ToString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...