Controls
на самом деле является свойством, предоставляемым классом Control
(и, следовательно, классом Form
, поскольку он наследуется от Control
), и представляет коллекцию всех элементов управления.которые были добавлены к этому конкретному экземпляру класса формы.
Вот почему вы не можете использовать его из другого класса, потому что у вас нет ссылки на Form
объект, к которому вы 'пытаемся добавить элементы управления в другой класс.Это то, что означает «не существует в текущем контексте».
Вам необходимо передать экземпляр формы, в которую вы хотите добавить элементы управления, в качестве параметра метода в классе, который добавитэлементы управления:
public void AddControls(Form frm)
{
TextBox txtbx = new TextBox();
txtbx.Text = "asd" + x.ToString();
txtbx.Name = "txtbx" + x.ToString();
txtbx.Location = new Point(10, (20 * x));
txtbx.Height = 20;
txtbx.Width = 50;
frm.Controls.Add(txtbx);
}
Но вам, вероятно, следует пересмотреть дизайн вашего приложения, если вы вынуждены занять такую позицию.Вы действительно не должны добавлять элементы управления в форму из отдельного класса, потому что это увеличивает количество связей между вашим пользовательским интерфейсом и вспомогательными классами, которые вы должны стремиться минимизировать в максимально возможной степени.В целом, в большинстве случаев вам особенно трудно найти что-то, что должно привести к появлению красного флажка, если вы пытаетесь сделать это неправильно.