声明一个文本框数组

时间:2013-04-18 16:45:58

标签: c# arrays visual-studio-2010 textbox instantiation

我正在尝试将数组Scores声明为文本框数组。它没有大小。我还需要将它声明为实例变量,并在方法CreateTextBoxes中实例化它。我一直收到一个错误,“分数是一个字段但是像一个类型一样使用。”

namespace AverageCalculator
{
    public partial class AverageCalculator : Form
    {

    private TextBox[] Scores;

    public AverageCalculator()
    {
        InitializeComponent();
    }

    private void AverageCalculator_Load(object sender, EventArgs e)
    {
        btnCalculate.Visible = false;
    }

    private void btnOK_Click(object sender, EventArgs e)
    {
        int intNumTextBoxes;

        intNumTextBoxes = Convert.ToInt32(txtNumScores.Text);

        this.Height = 500;
        btnCalculate.Visible = true;
        btnOK.Enabled = false;

    }

    private void CreateTextBoxes(int number)
    {
        Scores[number] = new Scores[number];

        int intTop = 150;

        for (int i = 0; i < 150; i++)
        {

        }
    }
}
}

6 个答案:

答案 0 :(得分:2)

您需要实例化TextBox,但数字应该是常量您可以阅读有关数组创建表达式 here 的更多信息。如果你想要可变大小,最好使用List而不是数组。

Scores = new TextBox[number];

使用列表

List<TextBox> Scores= new List<TextBox>();

答案 1 :(得分:2)

你的CreateTextBoxes应该是这样的:

private void CreateTextBoxes(int number)
{
    Scores = new TextBox[number];

    for (int i = 0; i < number; i++)
    {
        Scores[i] = new TextBox();
    }
}

正如阿迪尔所说,List<TextBox>在这种情况下可能更好。

答案 2 :(得分:1)

您的代码应为:

Scores = new TextBox[number];
// do things with this array

答案 3 :(得分:1)

问题在于

private void CreateTextBoxes(int number)
    {
        Scores[number] = new Scores[number];

        int intTop = 150;

        for (int i = 0; i < 150; i++)
        {

        }
    }

当您尝试初始化数组时,您在键入时使用字段的名称,并包含字段名称的索引。只需将新类型更改为TextBox并删除索引访问器,如下所示:

private void CreateTextBoxes(int number)
    {
        Scores = new TextBox[number];

        int intTop = 150;

        for (int i = 0; i < 150; i++)
        {

        }
    }

答案 4 :(得分:0)

用第2行替换第1行

 Scores[number] = new Scores[number];
 Scores[number] = new TextBox();

答案 5 :(得分:0)

你不能这样做。

Scores[number] = new Scores[number];

使用TextBox列表。