首页 > 解决方案 > 通过组合框计算多次转化

问题描述

所以,下面是我所得到的。它一直告诉我我无法在小数或双精度上使用数学运算符。不幸的是,这些是我必须使用的。我想要做的是将长度测量从英制转换为公制。我已经查看了许多其他与此相关的问题,并且能够弄清楚部分代码以及如何让它让我做一个“if”语句。但我就是想不通它的数学部分。谁能指出我正确的方向?

public partial class Form1 : Form
{

    string conversions;
    decimal meter, feet, centimeter, inches, miles, kilometers;


    public Form1()
    {
        InitializeComponent();

    }

    private void btnCalculate_Click(object sender, EventArgs e)
    {
        calculateConversions();


    }

    private void Form1_Load(object sender, EventArgs e)
    {
        cbConversion.SelectedText = "Miles to Kilometers";
        string[] Conversion = new string[] { "Miles to Kilometers",
            "Kilometers to Miles",
            "Feet to Meters",
            "Meters to Feet",
            "Inches to Centimeters",
            "Centermeters to Inches" };
        { }
        for (int i = 0; i < Conversion.Length; i++)
        {
            cbConversion.Items.Add(Convert.ToString(Conversion[i]));
        }
        miles = 0m;
        kilometers = 0m;
        feet = 0m;
        meter = 0m;
        inches = 0m;
        centimeter = 0m;



    }


         private void cbConversion_SelectedIndexChanged(object sender, EventArgs e)
    {
        conversions = Convert.ToString(cbConversion.SelectedItem);

        IList<string> lstString = new List<string>();
        lstString.Add("Miles:");
        lstString.Add("Kilometers:");
        lstString.Add("Feet:");
        lstString.Add("Meters:");
        lstString.Add("Inches:");
        lstString.Add("Centimeters:");

        label2.Text = lstString[cbConversion.SelectedIndex];

        IList<string> lstStringTwo = new List<string>();
        lstStringTwo.Add("Kilometers:");
        lstStringTwo.Add("Miles:");
        lstStringTwo.Add("Meters:");
        lstStringTwo.Add("Feet:");
        lstStringTwo.Add("Centimeters:");
        lstStringTwo.Add("Inches:");
        label3.Text = lstStringTwo[cbConversion.SelectedIndex];

    }

private void calculateConversions()
    {
        decimal input = Convert.ToDecimal(txtInput.Text);
        decimal output = Convert.ToDecimal(txtOutput.Text);

        if (cbConversion.SelectedText == "Miles to Kilometers")
        {
            decimal miles = Convert.ToDecimal("");


        }

我什至翻阅了我的书,但无法弄清楚(这是一项家庭作业)我拥有的 GUI。它是通过组合框选择的,输入的文本被计算到转换中。一切正常,但数学

标签: c#

解决方案


cbConversion.SelectedIndex = 0;在 form1_load 中添加以选择组合框的第一个索引,然后在calculateConversions()我在 textoutput.text 中输出的每个条件下使用函数。

然后剩下的你可以做 else if 并研究其他转换公式。

我使用cbConversion.SelectedItem.ToString()了这样您就可以从组合框中获取项目文本以进行比较。

你可以试试这个

string conversions;
    decimal meter, feet, centimeter, inches, miles, kilometers;

    private void btnCalculate_Click(object sender, EventArgs e)
    {
        calculateConversions();
    }

    public Form1()
    {
        InitializeComponent();



    }

    private void Form1_Load(object sender, EventArgs e)
    {
        cbConversion.SelectedText = "Miles to Kilometers";
        string[] Conversion = new string[] { "Miles to Kilometers",
        "Kilometers to Miles",
        "Feet to Meters",
        "Meters to Feet",
        "Inches to Centimeters",
        "Centermeters to Inches" };
        { }
        for (int i = 0; i < Conversion.Length; i++)
        {
            cbConversion.Items.Add(Convert.ToString(Conversion[i]));
        }
        miles = 0m;
        kilometers = 0m;
        feet = 0m;
        meter = 0m;
        inches = 0m;
        centimeter = 0m;
        cbConversion.SelectedIndex = 0;
    }

    private void cbConversion_SelectedIndexChanged(object sender, EventArgs e)
    {

        conversions = Convert.ToString(cbConversion.SelectedItem);

        IList<string> lstString = new List<string>();
        lstString.Add("Miles:");
        lstString.Add("Kilometers:");
        lstString.Add("Feet:");
        lstString.Add("Meters:");
        lstString.Add("Inches:");
        lstString.Add("Centimeters:");

        label2.Text = lstString[cbConversion.SelectedIndex];

        IList<string> lstStringTwo = new List<string>();
        lstStringTwo.Add("Kilometers:");
        lstStringTwo.Add("Miles:");
        lstStringTwo.Add("Meters:");
        lstStringTwo.Add("Feet:");
        lstStringTwo.Add("Centimeters:");
        lstStringTwo.Add("Inches:");
        label3.Text = lstStringTwo[cbConversion.SelectedIndex];


    }
    private void calculateConversions()
    {
        decimal input = Convert.ToDecimal(txtInput.Text);
        decimal mileToKM = Convert.ToDecimal(1.609344);

        if (cbConversion.SelectedItem.ToString() == "Miles to Kilometers")
        {

            decimal miles = (input * mileToKM);
            txtOutput.Text = miles.ToString();
        }


    }

输出 在此处输入图像描述


推荐阅读