2016-03-15 3 views
1

В обработчике событий кнопки «Вставить в массив ArrayList» проверьте, есть ли у пользователя: Введено положение в текстовом поле «Позиция». Введено имя актера в текстовое поле «Имя актера».C# - Вставить в список массивов

Проверьте эти текстовые поля, чтобы узнать, ввело ли пользователь значение. Не беспокойтесь, если пользователь ввел неправильное значение, просто введя значение. Если текст не был введен, отобразите соответствующие сообщения об ошибках в формате окна сообщения и выйдите из метода, чтобы дальнейшая обработка не выполнялась.

Следуйте за этим вызовом InsertIntoArrayList, передавая эти значения и вставляя новое значение в ArrayList.

Наконец, позвоните в PopulationActors, чтобы обновить его элементы, чтобы отразить изменения.

Мой код до сих пор не вставляя в массив:

private void btnInsert_Click(object sender, EventArgs e) 
     {    

      if (string.IsNullOrEmpty(txtPosition.Text)) 
      { 
       MessageBox.Show("Please enter a Position"); 
       return; 
      } 
      if (string.IsNullOrEmpty(txtActorName.Text)) 
      { 
       MessageBox.Show("Please enter an Actor Name"); 
       return; 
      } 

      InsertIntoArrayList(txtActorName.Text, Position); 
      PopulateActors(); 
     }   

И методы используются:

void InsertIntoArrayList(string txtActorName, int txtPosition) 
      { 

      ArrayList ActorArrayList = new ArrayList(); 

      ActorArrayList.Insert(txtActorName, txtPosition); 

      } 

И:

void PopulateActors() 
      { 
       cboActor.Items.Clear(); 

       foreach (string Actor in ActorArrayList) 
       { 
        cboActor.Items.Add(Actor); 
       } 
      } 

Новичок Coder! Приветствия для вашей помощи :)

+1

Где вы получаете переменную Position, переданную коду ввода? Обратите внимание, что ActorArrayList объявляется внутри кода вставки и, следовательно, не может быть просмотрен вне этого метода. Если ваш код компилируется, у вас есть еще один ArrayList с именем ActorArrayList, объявленный в более глобальной области. – Steve

+1

Хотя это не решит вашу текущую проблему (которую Лука сделал для вас хорошо), вы действительно должны изменить 'ArrayList' на' List '. 'ArrayList' является нетипизированным списком и действительно не должен использоваться, когда вы знаете тип, который должен содержать список. – Enigmativity

+0

@ Энигматичность определенно правильная, если у вас есть доступ к более новым версиям C#. –

ответ

1

Ваша проблема находится здесь:

void InsertIntoArrayList(string txtActorName, int txtPosition) 
{ 

     ArrayList ActorArrayList = new ArrayList(); 

     ActorArrayList.Insert(txtActorName, txtPosition); 

} 

Каждый раз, когда вы вызываете эту функцию, вы создаете новый ArrayList и вставить что-то в него. Тем не менее, этот ArrayList затем бесцеремонно освобождается из памяти, потому что функциональный блок выполнен.

Вам необходимо добавить экземпляр-член в свой класс и вставить туда свои данные. Вы можете добавить что-то вроде этого в верхней части класса:

private ArrayList ActorArrayList = new ArrayList(); 

Также Insert ожидает Int в качестве первого параметра, так что вы можете переключать два параметра.

+0

Приветствия! Сделал эти изменения и все отсортировано сейчас :) Спасибо! – MeLzA

+0

Никаких проблем, не забудьте поднять и принять! –

Смежные вопросы