使用字符串在C#中调用变量

时间:2013-08-25 22:13:01

标签: c# string

我正在尝试使用循环来编辑多个文本框的数据,但我无法弄清楚如何转换其内容是我的框名称的字符串来访问每个框的文本元素。

       private void reset_Click(object sender, EventArgs e)
    {
        string cell;
        for(int i = 0; i < 9; i++)
        {
            for (int j = 0; j < 9; j++)
            {
                cell = "c" + Convert.ToChar(i) + Convert.ToChar(j);
                cell.text = "";
            }
    }

我的文本框名为“c00,c01,.... c87,c88”,这是我的“cell”变量在每次迭代过程中的内容,但是上面的代码不起作用,因为它试图访问字符串的“text”元素,这显然没有意义。

显然我可以单独清除每个框的内容,但由于我将有多个事件会改变文本框的内容,因此能够实现循环来实现这一目标是理想的,而不是有81行代替每个事件。

3 个答案:

答案 0 :(得分:8)

使用数组要好得多。像这样的2D数组:

TextBox[,] textboxes = ...

private void reset_Click(object sender, EventArgs e)
{
    for(int i = 0; i < textboxes.GetLength(0); i++)
    {
        for (int j = 0; j < textboxes.GetLength(1); j++)
        {
            textboxes[i,j].Text = "";
        }
    }
}

或像这样的锯齿状数组:

TextBox[][] textboxes = ...

private void reset_Click(object sender, EventArgs e)
{
    for(int i = 0; i < textboxes.Length; i++)
    {
        for (int j = 0; j < textboxes[i].Length; j++)
        {
            textboxes[i][j].Text = "";
        }
    }
}

答案 1 :(得分:5)

我建议您使用TextBoxes的二维数组。这将使您的生活更轻松。

无论如何试试这个this.Controls.Find()

答案 2 :(得分:1)

你应该能够使用它。

TextBox txtBox = this.Controls.Select( c => c.Name == cell );
txtBox.Text = "";