C# 在数组中存储信息并使用组合框的转换程序

C# 在数组中存储信息并使用组合框的转换程序,c#,arrays,combobox,C#,Arrays,Combobox,这是我的家庭作业,我总是试图指出这一点,所以这是最重要的。该程序是一个转换程序。用户从组合框中选择一个转换选项,然后在用户点击“计算”时输入长度,即:英尺到米。程序计算转换。我有几个问题,因为数组部分让我困惑。我想确定我走的方向是正确的 我想我是在用我的数组填充我的组合框,我用了一个例子,虽然我不完全理解它。当用户点击“计算”按钮时,我是否应该将转换值存储在同一数组中?比如: string [,] conversions = { {kilometers to miles, .11111}, {m

这是我的家庭作业,我总是试图指出这一点,所以这是最重要的。该程序是一个转换程序。用户从组合框中选择一个转换选项,然后在用户点击“计算”时输入长度,即:英尺到米。程序计算转换。我有几个问题,因为数组部分让我困惑。我想确定我走的方向是正确的

我想我是在用我的数组填充我的组合框,我用了一个例子,虽然我不完全理解它。当用户点击“计算”按钮时,我是否应该将转换值存储在同一数组中?比如:

string [,] conversions = { {kilometers to miles, .11111}, {miles to kilometers, .11111}}
还是我用我所拥有的东西朝着正确的方向前进?为了清楚起见,当它被编码时,数组填充我的组合框,因此如果我添加额外的数据,那么它将在组合框中显示这些数字,这并不是我真正想要的

我的下一个问题是,当用户点击计算按钮时,如何知道用户选择了什么选项?我认为它与索引有关,但我对它的实际声明感到困惑

*****忽略这个问题。我想我找到了答案*********

最后,我想我的最后一个问题是,页面在文本框旁边有标签,因此如果用户选择“英里到公里”,输入文本框将显示英里,然后回答文本框将显示公里。。。那叫什么?我需要在我的书中找到它,但我不能。我知道我遗漏了一些东西,但我试图找到一个例子,或者在书中的什么地方,我只是没有看到它

下面是我目前拥有的代码

public partial class FrmConversions : Form
{
    const double Miles_To_Kilometers = 1.6093;
    const double Kilometers_To_Miles = 0.6214;
    const double Feet_To_Meters = 0.3048;
    const double Meters_To_Feet = 3.2808;
    const double Inches_To_Centimeters = 2.54;
    const double Centimeters_To_Inches = 0.3937;

    public FrmConversions()
    {
        InitializeComponent();
    }


    private void btnExit_Click(object sender, EventArgs e)
    {
        this.Close();
    }


    private void FrmConversions_Load(object sender, EventArgs e)
    {
        cboConversions.Items.Clear(); //clear the combobox

        string[,] conversions =
            {
                {"Kilometers to Miles"  , "Miles to Kilometers"},
                {"Feet to Meters"       , "Meters to Feet"},
                {"Inches to Centimeters", "Centimeters to Inches"}
            };

        foreach (string str in conversions)
        {
            cboConversions.Items.Add(str);
        }
    }


    private void btnClear_Click(object sender, EventArgs e)
    {
        txtEntry.Clear();
        txtAnswer.Clear();
    }


    public bool IsDecimal(TextBox txtEntry, string name)
    {
        try
        {
            Convert.ToDecimal(txtEntry.Text);
            return true;
        }

        catch (FormatException)
        {
            MessageBox.Show(name + " must be a decimal value.", "Entry Error");
            txtEntry.Focus();
            return false;
        }
    }


    private void btnCalculate_Click(object sender, EventArgs e)
    {
        int index = cboConversions.SelectedIndex;
        if (index != -1)
        {
            try
            {
                if (IsDecimal())
                {
                    txtAnswer.Text = ToString;
                }

                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message + "\n\n" +
                    ex.GetType().ToString() + "\n" +
                    ex.StackTrace, "exception");
                }
            }
        }
    }
}


}

有很多方法可以做到这一点,一本字典会很整洁吗

在本例中,我指定的字符串字典的键被加载到组合框中。稍后,这些字符串可用于从字典中检索转换值

// Declare at the top
Dictionary<string, double> conversions = {
    { "Kilometers to Miles", Kilometers_To_Miles},
    { "Miles to Kilometers", 1 / Kilometers_To_Miles},
    { "Feet to Meters", Feet_To_Meters},
    { "Meters to Feet", 1 / Feet_To_Meters},
etc
};

// In Form Load
foreach (string str in conversions.Keys)
{
    cboConversions.Items.Add(str);
}

// In btnCalculate_Click
var conversionValue = conversions[cboConversions.Text];
var convertedValue = (double)txtEntry.Text * conversionValue; // Need to validate is numeric
txtAnswer.Text = convertedValue

谢谢你,先生。这很有帮助。
// Declare at the top
object[,] conversions = {
    { "Kilometers to Miles", Kilometers_To_Miles},
    { "Miles to Kilometers", 1 / Kilometers_To_Miles},
    { "Feet to Meters", Feet_To_Meters},
    { "Meters to Feet", 1 / Feet_To_Meters},
etc
};

// In Form Load
foreach (string str in conversions)
{
    cboConversions.Items.Add(str[0]);
}

// In btnCalculate_Click
var conversionValue = conversions.First(x => x[0] == cboConventions.Text)[1];
var convertedValue = (double)txtEntry.Text * conversionValue; // Need to validate is numeric
txtAnswer.Text = convertedValue