C# 我可以使用文本框名称作为列表中的值吗?

C# 我可以使用文本框名称作为列表中的值吗?,c#,list,textbox,C#,List,Textbox,我正在创建一个列表,用文本框中的值更新一个MySql数据库,我怎样才能使这样的事情起作用呢 如果我使用 verdierX[0] = (int)decimal.Parse(box1.Text); 它很好用 但当我尝试在这样的循环中使用它时,它会爆炸。有人对如何解决这个问题提出了建议吗 int[] dbNavnX = new int[8]; int[] verdierX = new int[8]; string[] boxList = new string[8]

我正在创建一个列表,用文本框中的值更新一个MySql数据库,我怎样才能使这样的事情起作用呢

如果我使用

    verdierX[0] = (int)decimal.Parse(box1.Text); 
它很好用 但当我尝试在这样的循环中使用它时,它会爆炸。有人对如何解决这个问题提出了建议吗

    int[] dbNavnX = new int[8]; 
    int[] verdierX = new int[8];
    string[] boxList = new string[8];

    private void Form1_Load(object sender, EventArgs e)
    { 

        boxList[0] = "box1.Text";
        boxList[1] = "box2.Text";
        boxList[2] = "box3.Text";
        boxList[3] = "box4.Text";
        boxList[4] = "box5.Text";
        boxList[5] = "box6.Text";
        boxList[6] = "box7.Text";
        boxList[7] = "box8.Text";
    }

    private void sumX()
    {
        for (int sum = 0; sum < 8; sum++)
        {
            verdierX[sum] = (int)decimal.Parse(boxList[sum]);
        }
    }
int[]dbNavnX=newint[8];
int[]verdierX=新int[8];
string[]boxList=新字符串[8];
私有void Form1\u加载(对象发送方、事件参数e)
{ 
boxList[0]=“box1.Text”;
boxList[1]=“box2.Text”;
boxList[2]=“box3.Text”;
boxList[3]=“box4.Text”;
boxList[4]=“box5.Text”;
boxList[5]=“box6.Text”;
boxList[6]=“box7.Text”;
boxList[7]=“box8.Text”;
}
私有void sumX()
{
对于(int-sum=0;sum<8;sum++)
{
verdierX[sum]=(int)decimal.Parse(boxList[sum]);
}
}

您应该更改boxList数组以保存对文本框的引用,而不是字符串:

TextBox[] boxList = new TextBox[8];


然后它就可以工作了。

您应该更改boxList数组以保存对文本框的引用,而不是字符串:

TextBox[] boxList = new TextBox[8];


然后它就会工作。

如果您没有使用WPF,您可以访问“me.controls”,它是表单中所有可用控件的数组。但是请注意,如果文本框位于面板或其他容器上,则使用object.controls获取文本框


希望能奏效。

如果您没有使用WPF,可以访问“me.controls”,它是表单中所有可用控件的数组。但是请注意,如果文本框位于面板或其他容器上,则使用object.controls获取文本框

希望能奏效。

试试:

int[] verdierX = new int[8];

private void Form1_Load(object sender, EventArgs e)
{
    for (var i = 0; i < 8; i++)
    {
        TextBox tb = (TextBox)FindControl("box" + i.ToString());
        verdierX[i] = (int)decimal.Parse(tb.Text);
    }
}
int[]verdierX=newint[8];
私有void Form1\u加载(对象发送方、事件参数e)
{
对于(变量i=0;i<8;i++)
{
TextBox tb=(TextBox)FindControl(“box”+i.ToString());
verdierX[i]=(int)decimal.Parse(tb.Text);
}
}
试试:

int[]verdierX=newint[8];
私有void Form1\u加载(对象发送方、事件参数e)
{
对于(变量i=0;i<8;i++)
{
TextBox tb=(TextBox)FindControl(“box”+i.ToString());
verdierX[i]=(int)decimal.Parse(tb.Text);
}
}

或者,来点灵巧的东西怎么样:

var sumX = from Control control in Controls
            where 
                control.GetType() == typeof (TextBox) 
                && control.Name.StartsWith("box")
            select Convert.ToInt32(((TextBox)control).Text);

或者,来点灵巧的东西怎么样:

var sumX = from Control control in Controls
            where 
                control.GetType() == typeof (TextBox) 
                && control.Name.StartsWith("box")
            select Convert.ToInt32(((TextBox)control).Text);

对不起,伙计,我不太明白你在问什么,你能澄清一下吗?你没有将文本框的内容分配给Form1\u Load上的boxList[]。您正在分配“box1.Text”字符串。对不起,伙计,我不太明白您的要求,您能澄清一下吗?您没有将文本框的内容分配给Form1_Load上的boxList[]。您正在分配“box1.Text”字符串。我真傻,我以为他想写更少的代码。。。顺便说一句,他需要重写sumX()方法,因为这个方法需要字符串和文本框的内容…我真傻,我以为他想写更少的代码。。。顺便说一句,他需要重写sumX()方法,因为该方法需要包含文本框内容的字符串……啊,更好的是,他会尝试这样做。名称“FindControl”在当前上下文中不存在。我缺少什么系统名称空间?@Darkmage:对不起,我以为你在做ASP;-)它实际上非常相似(除了名称Form1),您没有说。啊,更好的是,我会试试这个。名称“FindControl”在当前上下文中不存在。我缺少什么系统名称空间?@Darkmage:对不起,我以为你在做ASP;-)它实际上非常相似(除了名称Form1),您没有说.works,只要您没有任何其他名称以“box”开头的texbox,只要您没有任何其他名称以“box”开头的texbox