2011年6月11日 星期六

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;
}

沒有留言:

張貼留言