Я предполагаю, что каждая пользовательская кнопка является своим собственным экземпляром на отдельных пользовательских элементах управления?
Если это так, то вы можете перехватывать события кнопки в родительской форме. Если вы открываете отдельные кнопки через свойство, вы можете связать их с событиями Click. Как и все элементы управления, они имеют свойство name, поэтому у вас может быть один метод, который вызывается для всех событий нажатия кнопки.
Ниже у меня есть частичный пример кода. У меня есть два пользовательских элемента управления, которые имеют одну кнопку каждый. Кнопка на UC1 называется «btn1» и «btn2» для UC2. Я называю выставленное свойство "ButtonOK"
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
public Button ButtonOK
{
get { return btn1; }
}
}
public partial class UserControl2 : UserControl
{
public UserControl2()
{
InitializeComponent();
}
public Button ButtonOK
{
get { return btn2; }
}
}
Теперь у родителя («Form1») при загрузке есть метод, который связывается с событиями Click каждой кнопки, но вызывает тот же метод. Внутри метода, который я тестирую для свойства «Имя».
public Form1()
{
InitializeComponent();
}
void Form1_Load(object sender, EventArgs e)
{
RegisterButtonEvents();
}
void RegisterButtonEvents()
{
userControl11.ButtonOK.Click += new EventHandler(ButtonOK_Click);
userControl21.ButtonOK.Click += new EventHandler(ButtonOK_Click);
}
void ButtonOK_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
if (btn != null)
{
if (btn.Name == "btn1")
{
Console.WriteLine(" ButtonOK from UserControl1 was pushed. The tag is " + btn.Tag.ToString());
}
else if (btn.Name == "btn2")
{
Console.WriteLine(" ButtonOK from UserControl2 was pushed. The tag is " + btn.Tag.ToString());
}
}
}
Вы также можете использовать свойство тега элемента управления. Это свойство может быть очень полезным, поскольку оно может ссылаться на объекты.
Вам не нужно делать точно так, как показано, но вы можете использовать любую «Родительскую» форму, чтобы получить ссылку на UserControls, заставить их выставлять свои кнопки, а затем вы можете делать все что угодно со свойствами и событиями из этих кнопок. (или любой контроль в этом отношении).
Имейте в виду, что если вы подключаетесь к событию click на пользовательском элементе управления (в дополнение к родительской форме), вам нужно помнить о порядке, в котором он перечисляет список делегатов и выполняет их. код после начала события.
Надеюсь, это поможет.