c#获取文本框的值并存放在数组中

我依次输入x1-x8,y1-y8的值,可以得到曲线以及各个参数及中间变量。现在想点击Button3后,依次从左到右,从上到下,遍历文本框的值保存在数组中。请大神指点程序。

string[] values = new string[99];
for (int i = 0; i < this.Controls.Count; i++)
{
if (Controls[i] is TextBox)
//下面这句程序,读不出来值,这个就是我纠结的,请大神指点。
values[i] = ((TextBox)Controls[i]).Text;
values[i] += values[i];

textBox25.Text = values[i];

List<string> values = new List<string>();
foreach( Control c in this.Controls)
{
    if(c is TextBox)
    {
        values.Add(((TextBox)c).Text);
    }
}
string[] valueArray = values.ToArray();

 不过,这样做有一个问题:数组里字符串不一定和界面上的文本框顺序对应。要解决这个问题,你可以为每个文本框的Tag属性设置特定的字符串,然后,获取每个文本框的Text 并带上Tag值。这样就好识别了。例如,将最左上角那个文本框的Tag值设置为"p:",接下来的文本框Tag设置为"q:",……依次类推,代码可修改为:


List<string> values = new List<string>();
foreach( Control c in this.Controls)
{
    if(c is TextBox)
    {

        TextBox t = c As TextBox;

        string name = (string)t.Tag;

        string value = t.Text;
        values.Add( name + value);
    }
}
string[] valueArray = values.ToArray();

追问

string x1 = textBox1.Text;。。。 strdata = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8; textBox25.Text = strdata;这样写的话能显示,不过将X1文本框的name改成x1,string x1 = x1.Text;这样就错误,这是为什么呢?另一个程序要这样功能,但是他的文本框NAME改了,有什么方法吗?

追答

出现什么错误?
foreach( Control c in this.Controls)遍历语句 以及 if(c is TextBox)判断语句,与控件的名称没有关系呀。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-01
把你要统计的文本框控件放在一个panel上,每个控件的tag设定一个排序值,
比如0,1,3.
然后取panel的control,先过滤类型为Testbox,然后再根据tag属性排序。就OK了。
第2个回答  2014-04-01
ArrayList list = new ArrayList();
foreach (Control item in Controls)
{
if (item is TextBox)
{
list.Add(item.Text);
}
}
相似回答