2016-04-06 4 views
-3

Какова моя ситуация? Я использую C#. У меня есть форма с несколькими экземплярами одного usercontrol. Пользовательское управление имеет три кнопки. Добавить, Закрыть и Выбрать.Обнаружите, какой пользовательский элемент управления на форме был нажат

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

Любая помощь будет оценена,

Благодаря

ответ

0

В вашем UserControl, добавить EventHandler к кнопке. В EventHandler пожар произошло событие, к которому вы добавляете EventHandler в форме

Edit: Что-то вроде этого Edit2: Изменен его для удовлетворения требований плакатов

public delegate void UControlButtonCloseClickedHandler(UControl sender, EventArgs e); 
public partial class UControl : UserControl 
{ 
    public event UControlButtonCloseClickedHandler UControlButtonCloseClicked; 

    public UControl() 
    { 
     InitializeComponent(); 

     btnAdd.Click += ButtonAdd_Click; 
     btnSelect.Click += ButtonSelect_Click; 
     btnClose.Click += ButtonClose_Click; 
    } 


    private void ButtonClose_Click(object sender, EventArgs e) 
    { 
     UControlButtonCloseClicked(this, new EventArgs()); 
    } 
} 

И в вашей форме, то просто добавьте обработчик, как uControl.UControlButtonCloseClicked += Hanlder;

-1

Почему бы не связать каждую кнопку с тем же событием, а затем получить имя элемента управления, чтобы определить, является ли кнопка закрытия (поскольку каждый элемент управления ДОЛЖЕН иметь уникальное имя, если вы не динамически добавляете элементы управления в форма, но даже при этом вы должны назначать имя). EDIT: И, получив имя, которое я на самом деле имею в виду сравнение, если элемент управления, который вызвал событие такое же один, что вы хотите, чтобы выполнить действие, близкое открытые действия и т.д. :)

 public Form1() 
    { 
     InitializeComponent(); 
     btnCloseButton.Click += new EventHandler(OnUserControlClick); 
     btnOtherRandomButton.Click += new EventHandler(OnUserControlClick); 
     btnOtherRandomButton1.Click += new EventHandler(OnUserControlClick); 
    } 

    private static void OnUserControlClick(object sender, EventArgs e) 
    { 
     if (sender as UserControl == btnCloseButton) 
     { 
      this.Close(); 
     } 
    } 
+0

Не совсем уверен, что причина голосом, так как он отвечает на вопрос с образцом и объяснением. Плохое поведение ... –

Смежные вопросы