2009年11月15日 星期日

C# TextBox的文字排序和亂數排序

想要把C#裡的TextBox排序 其實原理來說並不難
除了TextBox.Text可以設定文字的屬性外 還有一個TextBox.Lines
代表的是TextBox中文字的行數(以"行"為分組的陣列) 型態為string[]
所以也可以用這個Lines屬性設定文字的內容
然後針對string[]陣列 就可以直接用Array.Sort()這個方法來進行排序
看似很簡單 但是不知道是.net的bug還是怎樣 如果程式直接寫成這樣
Array.Sort(textBox1.Lines);
textBox1是不會有反應的 還是呈現未排序前的狀態
所以要另外先把textBox1的內容存到一個暫存的陣列中 排序完再assign回去
為了簡化程式碼 因此把這功能寫成一個函式
此函式會把所接收到的textbox內容進行排序 (照字母順序排序)
private void sortTextBoxText(TextBox targetTextBox)
{
string[] temp = targetTextBox.Lines;
Array.Sort(temp);
targetTextBox.Lines = temp;
}

另外 如果要亂數排序的話也是一樣道理 可以透過Array.Sort(keys,items)這個方法
先亂數產生一個random index的陣列當keys 那Array.Sort()就會用這亂數keys排序後面的items
那我們的textbox就會變成亂數排序囉!
private void randomSortTextBoxText(TextBox targetTextBox)
{
string[] temp = targetTextBox.Lines;
double[] randomIndex = new double[temp.Length];
Random r = new Random();
for (int i = 0; i < temp.Length; i++)
{
randomIndex[i] = r.NextDouble();
}
Array.Sort(randomIndex,temp);
targetTextBox.Lines = temp;
}

1 意見:

張貼留言
匿名 提到...

好難喔~你每次po我都看不懂
~頭昏腦脹>_<