2

プログラム全体で更新されたレートを使用する方法を知りたいだけです。参考までにこれまでの私のコードは次のとおりです...

//Form 1
private void update_Click(object sender, EventArgs e)
{
    if (fromcountry.Text == tocountry.Text)
    { 
        MessageBox.Show(" Please Choose Two Different Currencies To Use This Function", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
    }
    else
    {
        btnconvert.Enabled = true;
        Exchange_Rate frm = new Exchange_Rate();
        frm.Show(this);
    }
}
//Form 1 one of the comboboxes for selecting 2nd country
private void tocountry_SelectedIndexChanged(object sender, EventArgs e)
{
    btnupdate.Enabled = true;
    btnconvert.Enabled = true;
    txtvalue.Enabled = true;
    exchange();
}
private void exchange()
{
    if (fromcountry.Text == tocountry.Text)
    {
        lblexchange.Text = "1";
    }
    else if (fromcountry.Text == "SGD - Singapore Dollar" && tocountry.Text == "USD - US Dollar")
    {
        lblexchange.Text = "1.26";
    }
    else if (fromcountry.Text == "SGD - Singapore Dollar" && tocountry.Text == "MYR - Malaysian Ringgit")
    {
        lblexchange.Text = "2.35";
    }
    else if (fromcountry.Text == "SGD - Singapore Dollar" && tocountry.Text == "EUR - Euro")
    {
        lblexchange.Text = "0.60";
    }
//Form 2
private void btnok_Click(object sender, EventArgs e)
{
    try
    {
        double exchange;
        exchange = Double.Parse(txtcurrent.Text);
        var frm = (currencyconverter)this.Owner;
        frm.PassValue(txtcurrent.Text);
        this.Close();
    }
    catch
    {
        MessageBox.Show("Please Enter Numbers", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        txtcurrent.Text = "";
    }
}

私はif-elseメソッドを使用することで、プログラムの開始時にレートを取得するにはあいまいすぎることを知っています。私は単純なプログラミングを学んでいる学生です。しかし、同じ変換をもう一度押したときに、更新されたレートをどのように使用するかを知る必要があります。十分な情報がない場合は、さらにコーディングを手伝うことができます

4

3 に答える 3

2

これを実現するにはさまざまな方法があり、設計上の決定を行わずに完全に回答することは不可能です。頭に浮かぶアプローチは、構成ファイル、データベース、または外部ソースのいずれかを使用することです。

ご指摘のとおり、これらの値をアプリケーションの外部に保存する何らかの方法が必要です。そのため、コンバージョン率が変化した場合、コードを書き直さずにソフトウェアで更新できます。

これを行う方法を決定する必要があります。

データベース データベースはおそらく最も柔軟性がありますが、それを維持する必要があります。Linq2SQLまたはNHibernateを介して、 ADO.NETからデータベースにアクセスするメカニズムは無数にあります。

外部ソース アクセスできる Web サービスまたは RSS フィードのいずれかから、通貨データを取得できるさまざまなオンライン ソースがあると確信しています。これらを読む価値はありますか?

構成 個人的には、これが私が提案するアプローチです。あなたは明らかにあまり経験がないので、構成のより簡単な解決策をお勧めします。データベースのスキルに取り組んでください。将来的には、それはあなたにとって簡単なことです。

hereのような構成ファイルの AppSettings セクションを使用します。

アプリケーションに App.Config ファイルを追加すると、コンバージョン率が保存されるため、ツールを書き直さなくても更新できます。プロジェクトを右クリックして新しいアイテムを追加し、次に構成ファイルを追加して、新しいファイルを作成できます。

デフォルトでは参照されないため、System.Configuration への参照を追加する必要もあります。

構成ファイルには AppSettings というセクションがあります。これは、キー/値タイプのプロパティの単純なセクションです。コンバージョン率ごとに 1 つずつ、一連​​のアプリ設定を作成します。例えば:

その後、国を使用してこのキーを生成できます。例えば:

string settingKey = string.Concat(fromcountry.Text, "_", tocountry.Text);

ConfigurationManager を使用して、この構成値にアクセスできます。

decimal rate = decimal.Parse(ConfigurationManager.AppSettings[settingKey]);

レートを取得したら、乗算を実行して正しい値を計算できます。

ここにはエラー処理がないことに注意してください。国が不明な場合や、設定に為替レートが含まれていない場合はどうなりますか。

于 2013-07-26T10:05:45.873 に答える
0

実際の通貨データを使用しておらず、静的データのみを使用している場合、改善する手順は次のとおりです。

  1. 基軸通貨として 1 つの通貨を持ちます。通常、値が 1 の USD です。
  2. コレクション [Key,Value] にすべての通貨のすべてのレートを USD で保存します。ここで、キーは通貨コード、たとえば SGD で、値は米ドルでのレートです。
  3. これで、選択したドロップダウン値を Key として渡して値を取得できます。例: Currencies[toCountry.Code]
  4. 今すぐレートを取得します。このように分割して、ToCountry に関して FromCountry の値を取得できます。

    var FromCountryRate = Currencies[FromCountry.Value]/Currencies[ToCountry.Value];
    
于 2013-07-26T10:03:10.287 に答える