【问题标题】:Use a string to call a variable in C#C#中使用字符串调用变量
【发布时间】:2013-08-25 22:13:01
【问题描述】:

我正在尝试使用循环来编辑多个文本框的数据,但我不知道如何将内容为我的框名称的字符串转换为访问每个框的文本元素。

       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”变量在每次迭代期间的内容,但是上面的代码不起作用,因为它试图访问显然没有意义的字符串的“文本”元素。

显然我可以单独清除每个框的内容,但由于我将有多个事件会更改文本框的内容,因此最好能够实现一个循环来执行此操作,而不是使用 81 行每个事件。

【问题讨论】:

  • 一般来说,当你有变量(或者在这种情况下是控件)命名为item_0item_1、...item_N 时,你应该停下来问自己,“我可以使用数组吗?代替这个?”
  • 另外一个控件,比如列表框,可能更合适。

标签: c# string


【解决方案1】:

使用数组要好得多。像这样的二维数组:

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 = "";
        }
    }
}

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      你应该可以链接到它。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-05
        • 1970-01-01
        • 2014-09-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多