只有在代码

时间:2015-07-05 02:41:57

标签: c#

我有一个按钮事件,根据输入到文本框中的数字生成一些随机数(例如,如果我输入5,它应该生成5个不同的随机数)。当我在文本框中键入数字,然后单击btnGenerateScores按钮时,它会生成一个数字并将该数字放入列表框中5次(或者根据文本框中的数字多次)。此行为不正确,它应生成5个不同的数字,并在列表框中列出每个数字。如果我在代码块中的任何地方放置一个MessageBox.Show(我用它来调试)命令,它就能正常工作。注释掉MessageBox.show会破坏代码。当我没有显示消息框时,有没有人看到任何原因导致它无法正常工作?代码如下:

private void btnGenerateScores_Click(object sender, EventArgs e)
            {
                strInput = txtInputNumber.Text;
                intRandCount = Convert.ToInt16(strInput);
                scoresArray = new int[intRandCount];
                intArrayCount = scoresArray.Length;
            btnGenerateScores.Enabled = false;
            // Loop to generate random number
            for (intRndCount = 0; intRndCount < intRandCount; intRndCount++)
            {
                GetRand(intRandCount);
                scoresArray[intCount] = intRandomNum;
                intGenRandom = intRandomNum;

                intArrScores = scoresArray[intCount];
                lstRdmScores.Items.Add(Convert.ToString(intArrScores));
                insertionSortArray = new int[intArrayCount];
                Array.Copy(scoresArray, insertionSortArray, intArrayCount);

                // Instantiate an instance of the class
                arraySort mySort = new arraySort();

                // Get the number of elements to store in the array                    
                string s = Convert.ToString(intCount);
                mySort.x = Int16.Parse(s);                  

                // Get array elements
                for (int i = 0; i < mySort.x; i++)
                {
                    intInsertionSort = insertionSortArray[intCount];
                    string s1 = Convert.ToString(intInsertionSort);
                    mySort.a[i] = Int16.Parse(s1);

                }

                // Sort the array and display in the second list box
                mySort.sortArray();
                intSortScores = insertionSortArray[intCount];
                lstSortScores.Items.Add(Convert.ToString(intSortScores));

// This is the the MessageBox.Show command in question:

    MessageBox.Show("The random number generated is: "); //+ Convert.ToString(intGenRandom));
            }
        }

忽略数组没有正确排序的事实,我稍后会讨论。我想一次做一件事。 我使用的是VS 2013,代码最初是在VS 2005中创建的。

1 个答案:

答案 0 :(得分:0)

根据您的要求,并查看来源,我简要重写了该应用程序:

    private void btnGenerateScores_Click_1(object sender, EventArgs e)
    {
        int genTimes;
        if (Int32.TryParse(txtInputNumber.Text, out genTimes))
        {
            var ints = new List<int>();
            for (var i = 0; i < genTimes; i++)
            {
                var r = new Random(Guid.NewGuid().GetHashCode());
                var rInt = r.Next(0, int.MaxValue); //for ints
                ints.Add(rInt);
            }

            var copyInts = ints.ToList();
            copyInts.AddRange(this.listBox1.Items.Cast<int>());
            copyInts = copyInts.Distinct().OrderBy(x => x).ToList();
            this.listBox1.Items.Clear();
            this.listBox1.Items.AddRange(copyInts.Cast<object>().ToArray());
            MessageBox.Show("The random number generated is: " + String.Join(",", ints));
        }
    }
}

希望得到这个帮助。

enter image description here