CultureInfo的困难和Listbox中的表示

时间:2015-02-26 08:12:12

标签: c# sql winforms listbox cultureinfo

我正试图在我的列表框中表示正确的double值。例如,我的SQL数据库中的值表示为“0,09”。现在,我将某些列中的值放入带有“SELECT DISTINCT”语句的列表框中。在数据库中搜索时,我需要写“0.09”,因为“0,09”找到了值。那不是问题。我尝试用

转换每个双精度值
 CultureInfo culInfo = new CultureInfo("en-US");
 for (int i = 0; i < convertCol.Count; i++)
            {
                storeDouble = convertCol[i];
                convertToString = storeDouble.ToString("0.######");


                if (convertToString.Contains(","))
                {
                    convertedString = convertToString.Replace(",", ".");
                    convertBackToDouble = double.Parse(convertedString, culInfo);
                        //Convert.ToDouble(convertedString);
                    convertedCol.Add(convertBackToDouble);

                }

                else 
                {
                    convertedCol.Add(convertCol[i]);

                }
            }

            DataColumn dc = new DataColumn(form1.getColName());
            dc.DataType = typeof(double);
            datTable.Columns.Add(dc);

            for (int j = 0; j < convertedCol.Count; j++)
            {
                datTable.Rows.Add(convertedCol[j]);
            }

            form1.colStorList.DisplayMember = form1.getColName();
            form1.colStorList.ValueMember = "Column";
            form1.colStorList.DataSource = datTable;

当我离开cultureInfo并尝试“Convert.ToDouble”时,“0,09”将转换为“9.0”。使用cultureInfo似乎是正确的,但我的列表框仍然有像“0,09”这样的条目。如何“强制”ListBox将我的值显示为“0.09”?

1 个答案:

答案 0 :(得分:1)

尝试添加此代码

form1.colStorList.FormatInfo = new CultureInfo("en-US");

form1.colStorList.ValueMember = "Column";