0

我需要一个属性,它从我的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();
                }
            }
        }
    }
4

2 回答 2

2

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

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

你的设置也没有多大意义。如果您更好地解释您想要实现的目标,也许我可以帮助您。

于 2013-05-20T08:46:36.613 回答
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循环而失败。您的代码假定该行包含与行数相同的单元格数。这可能适用于您的场景,但不太可能。

于 2013-05-20T08:55:01.747 回答