[英]TextBox.Focus() only works if I have a MessageBox.Show() after it?
[英]Application only works correctly if I have messagebox in the code
我有一個按鈕事件,它根據輸入到文本框中的數字生成一些隨機數(例如,如果我輸入 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 中創建的。
根據您的要求,並查看源代碼,我簡短地重寫了該應用程序:
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));
}
}
}
希望這有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.