-3

ブックマークなどを含むWordテンプレートがあります。これのほとんどは正常に機能します..しかし、switchステートメントに問題があります..これ以外ではスコープを失います。

保険の保険料に適用される通貨の種類をチェックします。「ポンド」の場合、テキスト「ポンド」をユーロやドルなどと同じ「£」記号に置き換えます。

私がここにいる理由は、私が考えていることが正しく可能であるという提案または承認を求めるためです.

私が思うのは、これが別の「メソッド/関数」である場合でした..しかし、どこから始めればよいかについての知識/専門知識が不足しています。

私は行ったことがありますが、Visual Studioにはそれがありません..ここにswitchステートメントがあります:

switch (sCurrency.Trim())
{
    case "Pounds":
        sCurType = "L";
        break;
    case "Euros":
        sCurType = "€";
        break;
    case "Dollars":
        sCurType = "$";
        break;
    default:
        sCurType = " ";
        break;
}

その後、次のように使用されます。

t_tbl.Cell(2, 2).Range.Text = sCurType + iExcess;

問題は、私が前に言ったように、この変数はその範囲を失うので、もはや存在しないか、値を保持していません..
これについて最善の方法は何ですか..??

4

2 に答える 2

3

通貨に関しては、フレームワークに実際のフォーマットを処理させることをお勧めします。問題は、正しい記号を取得するだけでなく、実際の値自体をフォーマットする必要があることです。つまり、記号の配置、小数点記号などです。例えばフォーマット

public CultureInfo GetCultureForCurrency(string currency)
{
    switch (currency)
    {
        case "Pounds":
            return new CultureInfo("en-GB"); // GBP (UK)
        case "Euros":
            return new CultureInfo("fr-FR"); // Euros (France)
        case "Dollars":
            return new CultureInfo("en-US"); // Dollars (USA)
            break;
        default:
            return Thread.CurrentCulture; // Default system culture
    }
}

使用法

var culture = GetCultureForCurrency("Dollars");
t_tbl.Cell(2, 2).Range.Text = iExcess.ToString("C", culture);
于 2012-11-13T15:38:41.650 に答える
1

次のような方法でそれを行うことができます:

private string ToCurrencySymbol(string currency)
{
    string currencySymbol = null;

    switch (currency.Trim().ToLower())
    {
        case "pounds":
            currencySymbol = "£";
            break;
        case "euros":
            currencySymbol = "€";
            break;
        case "dollars":
            currencySymbol = "$";
            break;
        default:
            currencySymbol = " ";
            break;
    }

    return currencySymbol
}

次に、次のように呼び出します。

t_tbl.Cell(2, 2).Range.Text = ToCurrencySymbol(sCurrency) + iExcess;

しかし実際には、特定の地域の通貨記号を提供する CurrencySymbol プロパティを持つRegionInfoクラスを使用する必要があります。

于 2012-11-13T15:30:17.307 に答える