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

时间:2009-09-25 13:31:00

标签: 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];

    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]);
        }
    }

4 个答案:

答案 0 :(得分:2)

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

TextBox[] boxList = new TextBox[8];

boxList[0] = box1;
boxList[1] = box2;
...

然后它会起作用。

答案 1 :(得分:1)

尝试:

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);
    }
}

答案 2 :(得分:1)

或者,Linq的善良如何:

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

答案 3 :(得分:0)

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

希望有效。