2015-10-26 4 views
0

Я создал 16 в текстовые поля Form Designer и хотел бы получить доступ к ним с помощью массиваДоступ к TextBox arrary

До сих пор я сделал это

public partial class Form1 : Form 
{  
    TextBox[] descrip2Arr; 

    public Form1() 
    { 
     InitializeComponent(); 


     TextBox[] descripArr = { decrip1_Box, decrip2_Box, decrip3_Box, decrip4_Box, 
            decrip5_Box, decrip6_Box, decrip7_Box, decrip8_Box, 
            decrip9_Box, decrip10_Box,decrip11_Box,decrip12_Box, 
            decrip13_Box,decrip14_Box,decrip15_Box,decrip16_Box}; 


     for (int i = 0; i < descrip2Arr.Length; i++) 
      descrip2Arr[i].Text = "Descrip 2 cod " + (i + 1).ToString(); 

    } 
} 

Это, кажется, работает нормально. Проблема в том, что когда я пытаюсь получить доступ к некоторому члену массива из другого метода, массив пуст (null). Как создать массив, содержащий все текстовые поля и доступ к которому можно получить из любого метода?

+0

В конструкторе он выглядит, как вы наполнение массива. Способ, которым вы пытаетесь получить доступ к нему из этого класса? – JonE

+0

Этот массив является локальным для класса Form1. Если вы хотите получить к нему доступ из другого класса, вам понадобятся две вещи. Сделайте массив открытым и передайте другому классу правильный экземпляр Form1. Однако это должно быть сделано по-разному, используя метод класса Form1, который возвращает то, что требуется другому классу. – Steve

+0

Удалите 'TextBox []' из строки 'TextBox [] descripArr = {..', и вы фактически интонизируете тот, который у вас есть объявлено ранее, не создавая нового. – TaW

ответ

0

Вы также можете сделать это с помощью списков

List<TextBox> myBoxes = new List<TextBox>(); 

     myBoxes.Add(textBox1); 
     myBoxes.Add(textBox2); 
     myBoxes.Add(textBox3); 
     myBoxes.Add(textBox4); 
     myBoxes.Add(textBox5); 

     myBoxes[0].Text = "Something"; 
Смежные вопросы