Базовый класс, взаимодействующий с элементами управления производного класса в Winforms C #

Допустим, у меня есть класс FormBase, унаследованный от Form, и у меня есть форма winforms, унаследованная от FormBase, как мне получить доступ и управлять элементами управления в дочерней форме следующим образом:



public class FormBase : Form
    {

        protected FormBase()
        {
          //for each Control in Child form Controls

          //Do something with the Controls
        }
    }

public partial class Products : FormBase 
    {
        public Products()
        {
            InitializeComponent();            
         }
    }


person Abdusalam Ben Haj    schedule 18.06.2011    source источник


Ответы (2)


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

Вместо этого вы должны сделать

public class FormBase : Form
{
   protected override void OnLoad(EventArgs e)
   {
     //access the child controls here. Take a look at Will A's answer
     base.OnLoad(e);
   }
}
person Eranga    schedule 19.06.2011
comment
Я не знал, что такой метод существует в winforms, спасибо! Я знаю, как проверить Form.controls, но я получал 0 элементов управления по указанной вами причине. - person Abdusalam Ben Haj; 19.06.2011

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

person Will A    schedule 19.06.2011