使用两个 checkedlistbox c# 的货币转换器,vb 2010

Currency Converter using two checkedlistbox c#, vb 2010

我对 C# 有点陌生,我有一个作业要做:

谁能帮我弄清楚如何从美元转换为欧元的按钮代码?

这就是到目前为止所做的:

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

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar != '.')
        {
            e.Handled = true;
        }

        // only allow one decimal point
        if (e.KeyChar == '.' && (sender as TextBox).Text.IndexOf('.') > -1)
        {
            e.Handled = true;
        }
    }

      private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
       {
              for (int ix = 0; ix < checkedListBox1.Items.Count; ++ix)
               if (ix != e.Index) checkedListBox1.SetItemChecked(ix, false);

         }

      private void checkedListBox2_ItemCheck(object sender,                           ItemCheckEventArgs e)
      {
          for (int ix = 0; ix < checkedListBox2.Items.Count; ++ix)
            if (ix != e.Index) checkedListBox2.SetItemChecked(ix, false);

      }

      private void button1_Click(object sender, EventArgs e)
      {

      }

}
}

我不知道 checkListBoxes 的用途是什么,但是您可以通过这种方式将美元转换为欧元:

private void button1_Click(object sender, EventArgs e)
{
    try
    {
        textBox1.Text =  (Double.Parse(textBox1.Text) * 0.88).ToString(); // 0.88 EUR = 1 USD
    }
    catch { }
}

使用 try 语句,这样如果您插入无法解析的内容到 Double

,程序就不会崩溃

如果希望结果只显示点后2位,可以使用textBox1.Text = (Math.Round(Double.Parse(textBox1.Text) * 0.88, 2)).ToString();

编辑

所以我很无聊,想找点事做,然后决定编写一些货币转换器的脚本,让您从中了解一些有关 ComboBox 的知识。然后就是:

double[] dcurrency = { 1, 1.13, 1.52 }; // Currency conversion to USD (By order: USD, EUR, GBP)
double[] currency = { 1, 0.88, 0.66 }; // Currency conversion from USD (By order: USD, EUR, GBP)
string[] currencies = { "USD", "EUR", "GBP" };
public Form1()
{
    InitializeComponent();
    comboBox1.Items.AddRange(currencies);
    comboBox2.Items.AddRange(currencies);
}

private void button1_Click(object sender, EventArgs e)
{
    if (comboBox1.SelectedIndex == -1 || comboBox2.SelectedIndex == -1)
    {
        textBox2.Text = "ERROR";
        return;
    }
    try
    {
        double c1 = Double.Parse(textBox1.Text);
        textBox2.Text = (c1 * dcurrency[comboBox1.SelectedIndex] * currency[comboBox2.SelectedIndex]).ToString();
    }
    catch { textBox2.Text = "ERROR"; }
}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (comboBox1.SelectedIndex == comboBox2.SelectedIndex)
    {
        ((ComboBox)sender).SelectedIndex = -1;
        textBox2.Text = "ERROR";
        return;
    }
    if(comboBox1.SelectedIndex > -1 && comboBox2.SelectedIndex > -1)
        button1_Click(button1, e);
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
    if (comboBox1.SelectedIndex > -1 && comboBox2.SelectedIndex > -1)
        button1_Click(button1, e);
}

}

它使用两个 TextBoxes - textBox1textBox2 和两个 ComboBoxes - comboBox1comboBox2private void comboBox_SelectedIndexChanged 是两个 ComboBoxes 的一个事件。当文本更改以及 ComboBox 的索引之一发生更改时,它会自动更新转换。

我使用了两个 Double 数组,因为使用 ComboBox 的索引始终将值转换为美元然后再转换为正确的货币比编写大量 if 更简单陈述和检查每一种可能性。重要的是 Double 数组和 ComboBoxes 的索引将针对相同的货币进行调整(0 = 美元、1 = 欧元、2 = 英镑等)。另外,我为 ComboBox 的项目使用了一个 String 数组,只是为了向您展示它是如何编写的。您也可以将这些项目插入每个 ComboBox 的属性菜单中。享受学习!