C# 将输入数据转换为基本数据类型

C# 将输入数据转换为基本数据类型,c#,combobox,int,switch-statement,typeconverter,C#,Combobox,Int,Switch Statement,Typeconverter,通过使用combobox选择,我在将textbox中的输入数据转换为基本数据类型时遇到了一些困难。下面是我的代码,代码中没有错误,但我在文本框中输入的数据保持不变。请帮助我以正确的方式做这件事。 多谢各位 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using

通过使用combobox选择,我在将textbox中的输入数据转换为基本数据类型时遇到了一些困难。下面是我的代码,代码中没有错误,但我在文本框中输入的数据保持不变。请帮助我以正确的方式做这件事。 多谢各位

    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;

    namespace WindowsFormsApplication1
    {

  public partial class Form1 : Form
    {
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        comboBox1.Items.Add("Int");
        comboBox1.Items.Add("Double");
        comboBox1.Items.Add("Decimal");
        comboBox1.Items.Add("Float");
        comboBox1.Items.Add("String");
        comboBox1.Items.Add("Long");
        this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.ComboBox1_SelectedIndexChanged);
    }

    private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        calculate(((ComboBox)sender).SelectedItem.ToString());
    }

    private void calculate (string sign)
    {

        switch (sign)
        { 
            case "Int":
                System.Convert.ToInt32(textBox1);
                int.Parse(textBox1.Text);
                break;
            case "Double":
                System.Convert.ToDouble(textBox1.Text);
                double.Parse(textBox1.Text);
                break;
            case "Decimal":
                System.Convert.ToDecimal(textBox1.Text);
                decimal.Parse(textBox1.Text);
                break;
            case "Float":
                System.Convert.ToSingle(textBox1.Text);
                Single.Parse(textBox1.Text);
                break;
            case "String":
                System.Convert.ToString(textBox1.Text);
                break;
            case "Long":
                System.Convert.ToInt64(textBox1.Text);
                long.Parse(textBox1.Text);
                break;
        }

    }

    private void button1_Click(object sender, EventArgs e)
    {
        Application.Exit();
    }
}
}
}

首先,您试图将文本框本身解析为这些类型,而不是文本框中的值。您应该使用文本框上的
Text
属性来获取值:

int.Parse(textBox1.Text); //Note the .Text
其次,您没有将操作的结果分配给文本框。要为文本框指定值,请再次使用
Text
属性:

textBox1.Text = int.Parse(textBox1.Text).ToString();
第三,如果文本框中的内容对您选择的类型无效,则此操作将失败。例如,如果在文本框中输入“hello”并选择
int
,代码将崩溃,因为无法将“hello”解析为
int
。您可以通过捕获
FormatException
来解决此问题

try
{
    int.Parse(textBox1.Text);
}
catch (FormatException fe)
{
    //Display an error
}
或者,您可以对每种类型使用
TryParse
方法(
int.TryParse

第四,在某些情况下,你不会注意到任何变化。如果您在文本框中输入
123
,并将其解析为
int
并替换文本框值,它仍然会说
123
,因为这就是
int
123
的字符串表示形式


第五,你想在这里完成什么?这段代码基本上什么都不做

以下是您正在使用的一些方法:

请注意,文档中提到了一个返回值

这些函数不会影响应用程序中的任何内容。他们只是将手术结果返回给你。这取决于你对结果做些什么

如果要使用转换操作的结果更新文本框,则需要按如下方式分配:

textBox1.Text=Int32.Parse(textBox1.Text)

也就是说:

1) 切勿使用对象名称,如
textBox1

2) 您不需要同时调用Convert.ToXXX()和XXX.Parse(),您可以选择其中一个

3)考虑使用TyPARSE方法而不是解析方法,或者添加一些异常处理。现在,如果用户在文本框中输入了无法转换为该类型的内容,您将抛出一个未处理的异常。

int.Parse(TextBox.Text)
double.Parse(TextBox.Text)
等不会更改
TextBox.Text中的值。
这些方法将以数字类型返回值。如果要将值重新分配回textbox.Text,则必须执行以下操作

textbox.Text = int.Parse(textbox.Text).toString();
但是,这段代码没有任何用处

更好地使用Parse方法应该是这样的:

int a = int.Parse(textbox1.Text);
int b = int.Parse(textbox2.Text);
textbox3.Text = (a+b).toString();

您没有将解析和转换的结果分配给任何东西。我遵循了您的步骤,并且它给出了错误“无法将类型'int'隐式转换为'string'”5。我的讲师让我们班做这个练习,我不知道她在干什么。我设法把这个练习付诸实践。现在没有错误,但我在文本框中输入的值保持不变。我修复了代码示例,将
添加到字符串中。阅读我的第四点:大多数情况下,你看不出有什么不同。如果在文本框中输入
123
,然后选择
decimal
,您应该会看到输出为
123.00
或类似的内容。