2015-11-25 43 views
0

我很努力使用C#Windows窗體將文本框中的元素添加到數組中。她是我到目前爲止有:從文本框中向C#數組添加元素

int[] id; 

private void btnButton1_Click(object sender, EventArgs e) 
    { 
     //INSERTION SORT 
     int newItem = txtAddElement.text; 

     //CODE HERE TO ADD ELEMENT TO ARRAY 


     //CODE BELOW THEN SORTS ARRAY INTO CORRECT ORDER 

     int element; 
     int temp; 

     for (int i = 1; i < id.Length; i++) 
     { 
      element = i - 1; 

      while (element >= 0 && id[element] > id[element + 1]) 
      { 
       temp = id[element]; 
       id[element] = id[element + 1]; 
       id[element + 1] = temp; 
      } 
     } 

     for (int i = 1; i < id.Length; i++) 
     { 
      lstPlayers.Items.Add(id[i]); 
     } 

     txtAddElement.Text = ""; 
    } 

我知道這個插入排序工作,因爲我已經手動添加了一些值以前,但是其基本組成部分,現在似乎被絆倒了我。

我想要的是程序運行一個空數組,如上面編碼,當我輸入一個值到txtAddElement我想使用按鈕btnAddToArray插入這個值到數組中。例如:

如果i型12插入txtAddElement,然後按btnAddToArray,我想在數組中現在有項目12 1,如果是是隨後經由txtAddElement添加另一個號碼,讓說7,然後按btnAddToArray按鈕,我想要數組然後有2個值[12,7],一旦我掌握了這一點,那麼我需要做的就是添加插入排序。

錯誤:

代碼片段

int[] id; 

    private void btnLogOn_Click(object sender, EventArgs e) 
    { 
     Array.Resize(ref id, id.Length + 1); //Object reference not set to an instance of an object. 
     id[id.Length - 1] = Convert.ToInt16(txtLogOn.Text); 

     //INSERTION SORT 
     int element; 
     int temp; 

解決:

int[] id = new int[0]; 
+1

你爲什麼不使用列表呢? – Jehof

+0

好的,如果按鈕被點擊,那麼這個處理程序被調用和排序工作,但它不直接從文本框中取得任何值。那麼你的代碼的'文本框部分'在哪裏? – Fabjan

+0

我被問到的問題說使用數組,否則我將沒有問題與此 – dragonAMC

回答

3

不能添加到陣列。您應該使用List<T>,例如

List<int> id; 
    ... 

    id.Add(123); 

或者重新大小數組(不推薦)

int[] id; 
    ... 
    Array.Resize(ref id, id.Length + 1); 
    id[id.Length - 1] = 123; 
+0

(一般)爲什麼不建議重新調整數組的大小? –

+1

@ИвоНедев:它可能是*消耗資源* - 數組(不像'List ')被設計爲恆定大小的集合。 –

+0

因爲這個邏輯已經在列表中爲你實現了。在實現已經完成的任務時,你很可能會犯錯誤。 – steavy