Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#I';我不确定下一步要做什么才能从两个组合框中提取信息_C#_Forms_Combobox - Fatal编程技术网

C#I';我不确定下一步要做什么才能从两个组合框中提取信息

C#I';我不确定下一步要做什么才能从两个组合框中提取信息,c#,forms,combobox,C#,Forms,Combobox,我不确定这个项目下一步该去哪里。计算按钮应使用转换计算,但我不太确定如何进行,并且我无法找到任何相关答案,因为它从两个组合框中提取数据。 此外,组合框应根据用户选择的内容进行更改。因此,例如,如果用户从第一个组合框中选择“in”,那么他们就不能从第二个组合框中选择“in” 如果有人能给我指出正确的方向,我将非常感激 public partial class Form1 : Form { const double mi_To_km = 1.6093; const double Km

我不确定这个项目下一步该去哪里。计算按钮应使用转换计算,但我不太确定如何进行,并且我无法找到任何相关答案,因为它从两个组合框中提取数据。
此外,组合框应根据用户选择的内容进行更改。因此,例如,如果用户从第一个组合框中选择“in”,那么他们就不能从第二个组合框中选择“in”

如果有人能给我指出正确的方向,我将非常感激

public partial class Form1 : Form
{
    const double mi_To_km = 1.6093;
    const double Km_To_mi = 0.6214;
    const double ft_To_m = 0.3048;
    const double m_To_ft = 3.2808;
    const double in_To_cm = 2.54;
    const double cm_To_in = 0.3937;
    const double ft_To_mi = 1 / mi_To_ft;
    const double mi_To_ft = 5280;

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

        cboFrom.Items.Clear(); //clear the combobox

        string[,] measurements =  
        {  {"in"}, {"ft"}, {"mi"}, {"cm"}, {"m"}, {"km"} };


        foreach (string str in measurements)
        {
            cboFrom.Items.Add(str);
        }

        foreach (string str in measurements)
        {
            cboTo.Items.Add(str);
        }

    }

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

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

    private void btnCalculate_Click(object sender, EventArgs e)
    {

        int from = cboFrom.SelectedIndex;
        int to = cboTo.SelectedIndex;


    }

    private void btnReset_Click(object sender, EventArgs e)
    {
        foreach (var c in this.Controls)
        {
            if (c is TextBox)
            {
                ((TextBox)c).Text = String.Empty;
            }
        }
        cboFrom.SelectedIndex = 0;
        cboTo.SelectedIndex = 0;
    }

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

}

}

您可以像这样使用SelectedIndexChanged事件:

    private void cboFrom_SelectedIndexChanged(object sender, EventArgs e)
    {
        btnCalculate.Enabled = true;

        if (cboTo.SelectedItem != null)
        {
            if (cboFrom.SelectedItem.ToString() == cboTo.SelectedItem.ToString())
            {
                btnCalculate.Enabled = false;
            }
        }
    }

    private void cboTo_SelectedIndexChanged(object sender, EventArgs e)
    {
        btnCalculate.Enabled = true;

        if (cboFrom.SelectedItem != null)
        {
            if (cboFrom.SelectedItem.ToString() == cboTo.SelectedItem.ToString())
            {
                btnCalculate.Enabled = false;
            }
        }
    }

要实现这一点,您需要修改代码:

    string[] measurements = { "in", "ft", "mi", "cm", "m", "km" };

    private void Form1_Load(object sender, EventArgs e)
    {

        foreach (string str in measurements)
        {
            cboFrom.Items.Add(str);
        }

        foreach (string str in measurements)
        {
            cboTo.Items.Add(str);
        }
    }

    private void cboFrom_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (cboTo.SelectedItem == null)
        {
            cboTo.Items.Clear();

            foreach (string str in measurements)
            {
                cboTo.Items.Add(str);
            }

            cboTo.Items.RemoveAt(cboFrom.SelectedIndex);
        }
        else
        {
            if (cboFrom.SelectedItem.ToString() == cboTo.SelectedItem.ToString())
            {
                cboTo.Items.Clear();

                foreach (string str in measurements)
                {
                    cboTo.Items.Add(str);
                }

                cboTo.Items.RemoveAt(cboFrom.SelectedIndex);
            }
        }
    }

    private void cboTo_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (cboFrom.SelectedItem == null)
        {
            cboFrom.Items.Clear();

            foreach (string str in measurements)
            {
                cboFrom.Items.Add(str);
            }

            cboFrom.Items.RemoveAt(cboTo.SelectedIndex);
        }
        else
        {
            if (cboTo.SelectedItem.ToString() == cboFrom.SelectedItem.ToString())
            {
                cboFrom.Items.Clear();

                foreach (string str in measurements)
                {
                    cboFrom.Items.Add(str);
                }

                cboFrom.Items.RemoveAt(cboTo.SelectedIndex);
            }
        }
    }
我想添加以下代码:

    private void btnCalculate_Click(object sender, EventArgs e)
    {
        int from = GetIndex(cboFrom.SelectedItem.ToString());
        int to = GetIndex(cboTo.SelectedItem.ToString());


    }

    private int GetIndex(string _measure)
    {
        int _index = -1;

        switch (_measure)
        {
            case "in":
                _index = 0;
                break;
            case "ft":
                _index = 1;
                break;
            case "mi":
                _index = 2;
                break;
            case "cm":
                _index = 3;
                break;
            case "m":
                _index = 4;
                break;
            case "km":
                _index = 5;
                break;
        }

        return _index;
    }

休息一下。重新思考。会发生什么?如果两个值相同,这真的是个问题吗?为什么不让用户随意地来回选择和更正选项呢?现在看看selectionchanged事件!在这里,你可以测试选择,然后做出反应:发送警告,启用或禁用按钮,或者干脆放手:从ft->ft不是世界末日。如果从“from”组合框中选择了“in”,你将如何从“To”组合框中删除“in”?为btnCalculate\u单击添加代码的最佳方法是什么,现在一切都正常了,只是我在从组合框中删除项目时仍有问题。您能详细说明如何删除项目吗?