Компонент формы Windows c # не добавляется в форму, если он не добавлен в тот же класс, в котором он был создан - PullRequest
0 голосов
/ 07 ноября 2019

Итак, в основном у меня есть класс Filter, который генерирует панель с компонентами, которые мне нужны для фильтра (плюс другие вещи)

   public Panel panel;
    public Filter(string labelText)
    {
        Panel panel = new Panel();
        Label label = new Label();
        label.Text = labelText;

        panel.Controls.Add(label);
        panel.Visible = true;
        panel.BackColor = Color.Black;

    }

    public Panel GetFilter()
    {
        return panel;
    }
}

Затем в коде формы вызовите GetFilter (), чтобы добавитьpanel

 Filter f = new Filter("name")
 Controls.Add(f.GetFilter());

Фильтр не отображается, хммм, давайте посмотрим, хорошо ли написан код в фильтре.

        //copy of the Fiter constructor
        Panel panel = new Panel();
        Label label = new Label();
        label.Text = "label text";

        panel.Controls.Add(label);
        panel.Visible = true;
        panel.BackColor = Color.PowderBlue;


        Controls.Add(panel);

хорошо, что сработало, последнее, давайте посмотрим, если яможет панель из класса фильтра

  public Panel panel;
    public Filter(string labelText, Form f)
    {

        Panel panel = new Panel();
        Label label = new Label();
        label.Text = labelText;

        panel.Controls.Add(label);
        panel.Visible = true;
        panel.BackColor = Color.Black;
        f.Controls.Add(f);
    }

    public Panel GetFilter()
    {
        return panel;
    }

черт, это тоже сработало, чего мне здесь не хватает? Ни один из приведенных выше рабочих примеров не работает для меня, потому что фильтр будет вызываться из абстрактного класса для добавления в родительскую панель. Что мне нужно сделать, чтобы панель отображалась?

pd: Цвета фона для тестирования, если панель добавлена.

...