Назначение событий программно пользовательскому элементу управления - PullRequest
1 голос
/ 25 ноября 2011

Возможно, это наивный вопрос, но я не нашел ответа.

Я создаю UserControl (кнопка, похожая на Winform).Как только он у меня есть, я использую его как коллекцию в контейнере (на самом деле это еще один UC, унаследованный от Control. Я помещаю этот контейнер в форму, а затем создаю программно коллекцию «кнопок», подобных этой;

tMenu.Add(new TrevoButton(Test.Properties.Resources.Mapa, "Map", "MapaClick"));
tMenu.Add(new TrevoButton(Test.Properties.Resources.Inst, "Install", "InstaClick"));
tMenu.Add(new TrevoButton(Test.Properties.Resources.Mode, "Model", "ModelClick"));

Параметры:

  • Изображение (изображение): изображение кнопки
  • Текст (строка): текст кнопки
  • Событие(строка): имя события, которое должно быть запущено при нажатии «кнопки».

Мой вопрос заключается в том, как, учитывая имя события, как мне назначить его как метод длякнопка?

Заранее спасибо.

1 Ответ

2 голосов
/ 26 ноября 2011

Нашел то, что мне нужно.

Это ДОБАВЛЕНИЕ в коллекцию (без кавычек на третий параметр):

tMenu.Add(new TrevoButton(Test.Properties.Resources.Mapa, "Mapa", MapaClick));

В форме (там же, где я добавляюitems), я определяю «MapaClick» как:

  public void MapaClick(object sender, EventArgs e)
  {
     MessageBox.Show("MapaClick");
  }

И затем конструктор UserControl получает параметр EventHandler:

  public TrevoButton(Image pImagen, string pTexto, EventHandler pEvento)
  {
     Image = pImagen;
     Texto = pTexto;
     this.Click += new EventHandler(pEvento);
     Iniciar();
  }

Вот и все.Когда я нажимаю кнопку, появляется сообщение!Спасибо @lAbstract.Ваш ответ поставил меня таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...