none
关于C# 2010 中使用控件数组或类似能达到目的的功能的问题 RRS feed

  • 问题

  • 我建立了连续的5个TextBox,想要在5个TextBox里面分别输入一个人名,然后,将这个5个人名获取,并插入一个字符串数组当中进行保存。

    该怎么操作才能建立起来来TextBox[0]~TextBox[4]这样的控件数组呢?

    谢谢。

    2014年2月5日 9:06

答案

  • 若使用动态获取TextBox,可先建立List<string> 来存放字符串,建议可将控制项的前的字符串都改为一样,只有最后字元是用数值变动,利用this.Controls.Find 来搜寻控制项,再将字符串建进List<string>:

    List<string> TextBox = new List<string>();
    
    int index = 1;
    Control control;
    while ( ( control = this.Controls.Find("textBox" + index, true).FirstOrDefault()) != null)
    {
        if (control is TextBox)
        {
            TextBox.Add((control as TextBox).Text);
        }
    
        index++;
    }
    • 已标记为答案 Ax Max 2014年2月7日 6:47
    • 取消答案标记 Ax Max 2014年2月7日 6:47
    • 已标记为答案 Ax Max 2014年3月29日 14:37
    2014年2月5日 9:36

  • // 假設 TextBox 名稱為 TextBox0 到 TextBox4 string strResult = string.Empty; for (int i = 0; i < 5; i++) { strResult +=((TextBox)this.Controls["TextBox" + i]).Text+","; }

    strResult = strResult.Remove(strResult.Length-1);

    string[]values = strResult.Split(','); //转化成数组


    ASP.NET Forum
    Other Discussion Forums
    FreeRice Donate
    Issues to report
    Free Tech Books Search And Download

    2014年2月7日 7:36
    版主

全部回复

  • 若使用动态获取TextBox,可先建立List<string> 来存放字符串,建议可将控制项的前的字符串都改为一样,只有最后字元是用数值变动,利用this.Controls.Find 来搜寻控制项,再将字符串建进List<string>:

    List<string> TextBox = new List<string>();
    
    int index = 1;
    Control control;
    while ( ( control = this.Controls.Find("textBox" + index, true).FirstOrDefault()) != null)
    {
        if (control is TextBox)
        {
            TextBox.Add((control as TextBox).Text);
        }
    
        index++;
    }
    • 已标记为答案 Ax Max 2014年2月7日 6:47
    • 取消答案标记 Ax Max 2014年2月7日 6:47
    • 已标记为答案 Ax Max 2014年3月29日 14:37
    2014年2月5日 9:36
  •             // 假設 TextBox 名稱為 TextBox0 到 TextBox4
                string strResult = string.Empty;
                for (int i = 0; i < 5; i++)
                {
                    strResult += "," + ((TextBox)this.Controls["TextBox" + i]).Text;
                }
                MessageBox.Show(strResult);


    歡迎參觀我的Blog【菜鳥自救會】

    2014年2月5日 9:49
  • 若使用动态获取TextBox,可先建立List<string> 来存放字符串,建议可将控制项的前的字符串都改为一样,只有最后字元是用数值变动,利用this.Controls.Find 来搜寻控制项,再将字符串建进List<string>:

    List<string> TextBox = new List<string>();
    
    int index = 1;
    Control control;
    while ( ( control = this.Controls.Find("textBox" + index, true).FirstOrDefault()) != null)
    {
        if (control is TextBox)
        {
            TextBox.Add((control as TextBox).Text);
        }
    
        index++;
    }
    谢谢您的回答,不过因为是刚入门学习,所以我还看不懂上面的部分代码。我打算仔细研究一下。看看是怎么实现的。
    2014年2月7日 6:48
  •             // 假設 TextBox 名稱為 TextBox0 到 TextBox4
                string strResult = string.Empty;
                for (int i = 0; i < 5; i++)
                {
                    strResult += "," + ((TextBox)this.Controls["TextBox" + i]).Text;
                }
                MessageBox.Show(strResult);


    谢谢您的回答,不过,得到的是字符串。我还需将寻找办法将这个字符串转化成文本。

    或许,定义一个文本数组,就可以变成数组了吧。

    2014年2月7日 6:50

  • // 假設 TextBox 名稱為 TextBox0 到 TextBox4 string strResult = string.Empty; for (int i = 0; i < 5; i++) { strResult +=((TextBox)this.Controls["TextBox" + i]).Text+","; }

    strResult = strResult.Remove(strResult.Length-1);

    string[]values = strResult.Split(','); //转化成数组


    ASP.NET Forum
    Other Discussion Forums
    FreeRice Donate
    Issues to report
    Free Tech Books Search And Download

    2014年2月7日 7:36
    版主