在C#Winform中获取货币汇率

时间:2012-07-22 06:56:34

标签: c# winforms

我的书中有一个非常简单的声音winform任务。使用Windows窗体。在文本框中获取最新的货币汇率。

1 USD = ??? INR

显示已转换货币的最佳解决方案我认为是使用带有查询字符串的Process方法...

http://www.xe.com/ucc/convert.cgi?Amount=" + costTextBox.Text.ToString() + "&From=USD&To=INR"

但是如何获取并将值分隔到文本框中?

3 个答案:

答案 0 :(得分:4)

我建议您从here购买服务或使用此免费webservice

,而不是试图从xe.com的回复中删除该值
  1. 添加wsdl作为服务参考。
  2. 创建SoapClient
  3. 调用ConversionRate方法。
  4. 
    var result = client.ConversionRate(CurrencyConverterService.Currency.USD,
                                       CurrencyConverterService.Currency.INR);

答案 1 :(得分:2)

查看Google Finance API,请参阅以下函数:

public static decimal Convert(decimal amount, string from, string to)
        {
            WebClient web = new WebClient();

            string url = string.Format("http://www.google.com/ig/calculator?hl=en&q={0}{1}=?{2}", amount, from.ToUpper(), to.ToUpper());

            string response = web.DownloadString(url);

            Regex regex = new Regex("rhs: \\\"(\\d*.\\d*)");
            Match match = regex.Match(response);

            return System.Convert.ToDecimal(match.Groups[1].Value);
        }

然后你可以这样使用这个功能:

decimal converted = Convert(3.25, "USD", "EUR");

答案 2 :(得分:1)

您可以使用Yahoo currency converter执行此操作:

此方法将为您提供当前费率:

    decimal getCurrencyRate(string currFrom, string currTo)
    {
        decimal result;
        using (WebClient c = new WebClient())
        {
            string data = c.DownloadString(string.Format("http://download.finance.yahoo.com/d/quotes.csv?s={0}{1}=X&f=sl1d1t1ba&e=.csv", currFrom, currTo));
            string rate = data.Split(',')[1];
            var style = NumberStyles.Number;
            var culture = CultureInfo.CreateSpecificCulture("en-US");
            decimal.TryParse(rate, style, culture, out result);
        }
        return result;
    }

你用这种方式:

        //convert $50 to INR
        decimal val = 50.0M;
        //get rate
        decimal rate = getCurrencyRate("USD", "INR");
        //calculate value in INR
        decimal inrVal = val * rate;