1

我正在尝试将数组 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++)
        {

        }
    }
}
}
4

6 回答 6

2

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

Scores = new TextBox[number];

使用列表

List<TextBox> Scores= new List<TextBox>();
于 2013-04-18T16:48:24.790 回答
2

CreateTextBoxes可能应该是这样的:

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

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

正如 Adil 所建议的,List<TextBox>在这种情况下, a 可能更好。

于 2013-04-18T16:49:33.790 回答
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++)
        {

        }
    }
于 2013-04-18T16:51:44.877 回答
1

您的代码应为:

Scores = new TextBox[number];
// do things with this array
于 2013-04-18T16:48:17.067 回答
0

你不能这样做。

Scores[number] = new Scores[number];

使用TextBox.

于 2013-04-18T16:52:01.237 回答
0

将第 1 行替换为第 2 行

 Scores[number] = new Scores[number];
 Scores[number] = new TextBox();
于 2013-04-18T16:48:02.270 回答