在添加datagrid项时将字符串转换为int32

时间:2011-04-14 16:38:34

标签: c# string datagrid int

伙计们,对不起基本问题。我试图找出,但我仍然坚持下去。我是编程的新手,如果你们能帮助我,那就意味着很多。谢谢。 对于此代码,我得到了本网站某人的帮助。

这是我的问题,我有像这样的.txt数据

10192 20351 30473 40499 50449 60234 

10192 20207 30206 40203 50205 60226 

10192 20252 30312 40376 50334 60252

这是我的代码,我打开文本文件并解析成数字并将其放到6列datagrid。

所以我的数据在datagrid中就像这样:

第1栏|第2栏|第3栏|第4栏|第5栏|第6栏

10192 | 20351 | 30473 | 40499 | 50449 | 60234

private void Parsing_String(string filename)
    {
        List<Row> list = new List<Row>();

        foreach (String str in File.ReadLines(filename))
        {
            String[] strCols = str.Split(Convert.ToChar(" "));
            list.Add(new Row()
            {
                Column1 = strCols[0].Substring(2),
                Column2 = strCols[1].Substring(2),
                Column3 = strCols[2].Substring(2),
                Column4 = strCols[3].Substring(2),
                Column5 = strCols[4].Substring(2),
                Column6 = strCols[5].Substring(2),
            });
        }



        dg.ItemsSource = list;
    }

    public class Row
    {
        public string Column1 { get; set; }
        public string Column2 { get; set; }
        public string Column3 { get; set; }
        public string Column4 { get; set; }
        public string Column5 { get; set; }
        public string Column6 { get; set; }

    }

我想要做的是,我需要逐行排列数字以输入一些数学方程式。我需要将字符串转换为int。但我不知道如何,我做了一些试验但失败了。

例如: 首先,我在datagrid中放入第一行,其中包含6组数字并计算它。接下来,第二行。等等。如何获得我想要的数字并将其放入数学方程式中。

非常感谢。

3 个答案:

答案 0 :(得分:1)

如果您使用数据进行绑定,则将转换后的值存储到行中应该没有问题:

list.Add(new Row()
            {
                Column1 = int.Parse(strCols[0]),
                ...

无论你放在什么UI的东西,无论如何它都会调用ToSTring()并将其显示为字符串。因此,您的行对象有6个整数。

简单来说,在C#中你可以用单引号表示一个字符,然后分割成:str.Split(' ')

为了更加优雅,您可以通过将文件的一行传递到构造函数并在构造函数中执行拆分,在Row对象中包含行解释。然后你可以将行上的setter设为私有。然后foreach循环变为:

dg.ItemsSource = File.ReadLines(filename).Select(line => new Row(line)).ToList();

答案 1 :(得分:0)

您需要使用Int32.TryParse将字符串转换为int32s。

答案 2 :(得分:0)

要把flq的例子放得更远,我不会指望数据,并且会做这样的事情,所以如果解析失败你得到0 - 除非你想捕获异常并处理它有所不同。

int outValue;
list.Add(new Row()
            {
                Column1 = int.TryParse(strCols[0].Substring(2), out outValue) ? outValue : 0;,
                 ...