Обработчик для UserControl

174
08 января 2018, 07:39

Есть 5 шт UserControl'ов, в каждом делаю ( разные названия классов )

public partial class UserControlClass : UserControl
{
    public UserControlClass()
    {
       InitializeComponent();
    }
private static UserControlClass_instance;
public static UserControlClassInstance
{
   get
   {
      if (_instance == null)
      {
          _instance = new UserControlClass();
      }
       return _instance;
    }
  }
}

По кнопкам распределяю следующие:

if (!Panel.Controls.Contains(UserControlClass.Instance))
{
  Panel.Controls.Add(UserControlClass.Instance);
  UserControlClass.Instance.Dock = DockStyle.Fill;
  UserControlClass.Instance.BringToFront();
}
else
{
  UserControlClass.Instance.BringToFront();
}

Panel - Место куда будет показываться вызываемый UserControl

Можно ли создать один обработчик для работы с этими usercontroll'aми ?

Что-то типо такого:

public static void ControlVisible(Panel Panl, UserControl sv)
{
  if (!Panl.Controls.Contains(sv.Instance))
  {
    // UserControl sv - не правильный ( он не передаёт Instance )
     Panl.Controls.Add(SettingControl.Instance);
     sv.Instance.Dock = DockStyle.Fill;
     sv.Instance.BringToFront();
  }
  else
  {
       sv.Instance.BringToFront();
  }
}

И по кнопкам ( в форме ) делать вызов:

private void Button_Click(object sender, EventArgs e)
{
   ControlVisible(Control_Panel, UserControl.name);
}

2-ой вызов при нажатие на кнопку:

private void Button2_Click(object sender, EventArgs e)
{
   ControlVisible(Control_Panel, UserControl.name2);
}
Answer 1

Ну если правильно понял то так можно

void Check(Panel p, UserControl c)
        {
            if (p.Controls.Contains(p.Controls.OfType<UserControl>().Where(g => g.Name == c.Name).FirstOrDefault()))
                p.Controls.OfType<UserControl>().FirstOrDefault(g => g.Name == c.Name).BringToFront();
            else
            {
                p.Controls.Add(c);
                c.BringToFront();
            }
        }

Вызовы

private void button1_Click(object sender, EventArgs e)
        {
            Check(panel1, new Red());
        }
        private void button2_Click(object sender, EventArgs e)
        {
            Check(panel1, new Blue());
        }
READ ALSO
не работает return на событии onsubmit

не работает return на событии onsubmit

Здравия! У меня возникла интересная проблема: Имеется

256
Массив не инициализируется в сервисе Angular 2

Массив не инициализируется в сервисе Angular 2

Доброе время уток,кря-кряПытаюсь сделать систему меток на Ангуляре, но вот не задача есть компонент :

251
Замена подстроки в строке JS

Замена подстроки в строке JS

Всем приветУ меня есть пару селектов

360