属性从每行datagridview返回文本

时间:2013-05-20 08:42:30

标签: c# .net datagridview textbox

我需要一个属性,为datagridview中的每一行返回文本。我不知道我的工作方式是否有用。它说得到我不在当前的背景下。我的代码:

  TextBox[] text1=new TextBox[100];

  public string [] RowText
    {
        get
        {
                return text1[i].Text; 
        }
        set
        {
            int i = 0;
            foreach (DataGridViewRow row in datagridview1.Rows)
            {
                for ( i = 0; i < datagridview1.Rows.Count; i++)
                {
                    text1[i].Text= row.Cells[i].Value.ToString();
                }
            }
        }
    }

2 个答案:

答案 0 :(得分:2)

首先,如果i不是全局变量,那么它应该在get子句中声明。然后text1[i].Text返回单个字符串,但您的Property返回一个数组,因此将其更改为:

get
{
        return new string[] { text1[i].Text };
}

你的套装也没有多大意义。如果你更好地解释你想要达到的目标,也许我可以帮助你。

答案 1 :(得分:1)

首先,您不需要setter - 将代码放在getter或对象的构造函数中。并且您将返回一个TextBox对象数组,但您的属性签名表明您正在返回一个字符串数组。

如果你想返回一个字符串数组,那么可能是:

  public string [] RowText
    {
        get
        {
            List<string> text = new List<string>();
            foreach (DataGridViewRow row in datagridview1.Rows)
            {
                text.Add(row.Cells[i].Value.ToString());
            }
            return text.ToArray();
        }
    }

实际上,仔细查看代码,可能会因for循环而失败。您的代码假定该行包含与行数相同的单元格数。这可能适用于您的场景,但不太可能。