c#尝试随机化标签'System.NullReferenceException'时发生。在其他地方找不到明确的解决方案

时间:2016-11-18 13:39:02

标签: c# arrays winforms nullreferenceexception labels

我试图传递两个匹配的值(以十六进制和二进制匹配)并将它们放入从标签数组中随机选择的相应标签中。我只是熟悉.NET框架(4.0)。当我在调试“NullReferenceExceptionOccurred”时加载表单时尝试调试程序时返回。附加信息说明“对象引用未设置为对象的实例”。我已经检查但是我没有发现任何与使用标签数组有关的内容。该错误似乎出现在binaryLabels[j].Text = qstn;行上。

以下是相关代码。

首先声明标签数组

public Random rand = new Random();
public Label[] binaryLabels = new Label[4];
public Label[] hexLabels = new Label[4];

在表单加载时指定标签

public void frmQstn1_Load(object sender, EventArgs e)
    {
        binaryLabels[0] = this.lblBinary1;
        binaryLabels[1] = this.lblBinary2;
        binaryLabels[2] = this.lblBinary3;
        binaryLabels[3] = this.lblBinary4;


        hexLabels[0] = this.lblHex1;
        hexLabels[1] = this.lblHex2;
        hexLabels[2] = this.lblHex3;
        hexLabels[3] = this.lblHex4;
    }

下面的代码行生成包含二进制和相应十六进制值的数组。

 public void SetUpQuestionBnk()
    {
        string[] questions = { "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" };
        string[] answers = { "0", "1", "2", "3","4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F" };
        int i = rand.Next(0, questions.Length);
        string qstn = questions[i];
        string ans = answers[i];
        int [] lblCount = { 0, 1, 2, 3 };

        int j = rand.Next(0, lblCount.Length);
        int k = rand.Next(0, lblCount.Length);

        binaryLabels[j].Text = qstn;
        hexLabels[k].Text = ans;
    }

理论上,该代码应该在分别保存在数组“binaryLabels”和“hexLabels”中的随机选择的标签中显示字符串“qstn”和“ans”。

随机化在查看当地人时肯定有效,但与行binaryLabels[j].Text = qstn;有关的错误大概是hexLabels[k].Text = ans;如果有人知道如何解决这个问题,我们将非常感激。

编辑:**我已经检查了其他“解决方案”,但我不知道如何将它们应用于我的代码,因为所有其他解决方案似乎都没有使用随机值。 **

0 个答案:

没有答案