2013-08-04 1 views
-4

(Новое в C#) я создаю зубчатую форму массива в C#, как показано ниже, а затем передать его с образованием 2:Как передать зубчатый массив из одной формы в другую?

  // Answers jagged array that is declared in form 1 
     private Question[][] _answers;     

Следующий код, что я использую, чтобы создать вторую форму и проход массив к нему:

 //Code to pass all elements of array to new array in form 2 
     Question[][] DisplayAnswers = new Question[1][]; 

     //Code for new form2 
     ResultsForm resultsForm = new ResultsForm(); 

     //Code for dialog results from form 2 
     DialogResult dialogResult = resultsForm.ShowDialog(); 

Я передаю массив правильно?

+0

Возможный дубликат [Формы значения TextBox для значений Form2 TextBox] (http://stackoverflow.com/questions/14425713/form-textbox-values-to-form2-textbox-values) – Venson

+1

Я не вижу связи или взаимодействие между 'DisplayAnswers',' resultsForm' и '_answers'. Вы? Как вы думаете, что ваш отображаемый код передает массив ответов в 'resultsForm'? – stakx

+0

Формы resultsForm покажут ответы в массиве с зубцами, которые пользователь вводит в form1 (основная форма), когда они нажимают на параметр результатов. – user2421417

ответ

1

Я думаю, что вы имеете в виду, чтобы сделать это

//Code to pass all elements of array to new array in form 2 
    Question[][] DisplayAnswers = new Question[1][]; 

    //Code for new form2 
    ResultsForm resultsForm = new ResultsForm(DisplayAnswers); 

    //Code for dialog results from form 2 
    DialogResult dialogResult = resultsForm.ShowDialog(); 

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

+0

, если ваша вторая форма принимает массив как аргумент в конструкторе, то вы можете сделать так, как указано выше. – puneet

+0

Передает массив из одной формы в другую так же, как передать значение переменной из одной формы в другую? – user2421417

+0

Да переменная, которую мы передаем, может быть любого типа или класса, даже определенного пользователем класса. Вам просто нужно отбросить его обратно – puneet

0

У вас на самом деле есть пара опций, вы можете передать массив в конструкторе, если вы добавили его в конструктор на resultsForm. Другой вариант состоит в том, чтобы сделать массив public static, затем получить к нему доступ из resultsForm, присвоив ему имя основной формы.

+1

Почему это статично? Это просто вызовет проблемы только в том случае, если два экземпляра формы будут открываться одновременно, и это приведет к плохому ООП. Свойство экземпляра в ResultForm будет прекрасно. – Alejandro

+0

Я не сказал, что это идеальный вариант только для одного варианта. – tinstaafl