将ListViewBox中的列格式化为货币

时间:2015-10-15 10:49:27

标签: c# winforms

我试图在我的代码中将Arr 1格式化为currentcny,但它在我的Ammount专栏中没有表现得很好(翻译=不工作)

这是我的代码块;

       public void TransactionLog()
       {

        listView1.View = View.Details;
        listView1.GridLines = true;
        listView1.FullRowSelect = true;

        listView1.Columns.Add("Buy/Sell", 97);
        listView1.Columns.Add("Amount", 95);
        listView1.Columns.Add("Transaction ID", 100);

        string[] arr = new string[3];
        ListViewItem item;

        string URT = "https://api.eveonline.com/char/WalletTransactions.xml.aspx?keyID=4602486&&vCODE=BHGVeXQkRLKLkIkZQHdeyUxmUz9EfUwbvGzoc2eO4ZR8kRMYxk8PbD4LMwLF7BvH";
        XmlDocument XMLtrans = new XmlDocument();
        XMLtrans.Load(URT);
        XmlNodeList TRnodelist = XMLtrans.SelectNodes("/eveapi/result/rowset/row");
        foreach (XmlNode xmlnode in TRnodelist)
        {
            if (xmlnode.Attributes["transactionType"] != null)
                arr[0] = xmlnode.Attributes["transactionType"].InnerText;
            if (xmlnode.Attributes["price"] != null)
                arr[1] = xmlnode.Attributes["price"].InnerText;
            if (xmlnode.Attributes["transactionID"] != null)
                arr[2] = xmlnode.Attributes["transactionID"].InnerText;
            item = new ListViewItem(arr);
            listView1.Items.Add(item);     
        }

我已经尝试过了;

string.Format(CultureInfo.CreateSpecificCulture("ja-JP"), "{C:0}",  arr[1] = xmlnode.Attributes["price"].InnerText);

但我只是犯了错误。

enter image description here

2 个答案:

答案 0 :(得分:1)

作为bokibeg commentedString.Format使用composite formatting功能。这是语法;

{index[,alignment][:formatString]}

如您所见,索引组件在字符串组件之前

其他问题是,The "C" format specifier适用于数字值。这意味着,您无法格式化字符串。

如果您的xmlnode.Attributes["price"].InnerText返回一些有效的数值,则可以在尝试格式化之前使用正确的类型Parse方法对其进行解析。例如,如果返回有效的int,则需要在格式化之前使用int.Parse()

string.Format(CultureInfo.CreateSpecificCulture("ja-JP"), 
              "{C:0}",
              int.Parse(xmlnode.Attributes["price"].InnerText));

答案 1 :(得分:0)

您必须替换 {C:0} with {0:C}

 string.Format(CultureInfo.CreateSpecificCulture("ja-JP"), "{0:C}",  arr[1] = xmlnode.Attributes["price"].InnerText);