我有一个使用各种点击事件并且看起来像这样的项目
namespace Example
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btn_obj_Click(object sender, EventArgs e)
{
MyMethods.Method_1("text1");
}
private void btn_catg_Click(object sender, EventArgs e)
{
MyMethods.Method_1("text2");
}
private void btn_up_Click(object sender, EventArgs e)
{
MyMethods.Method_2("text1");
}
private void btn_top_up_Click(object sender, EventArgs e)
{
MyMethods.Method_2("text2");
}
private void btn_down_Click(object sender, EventArgs e)
{
MyMethods.Method_2("text3");
}
private void btn_top_down_Click(object sender, EventArgs e)
{
MyMethods.Method_2("text4");
}
public static class MyMethods
{
public static void Method_1(string text) {...}
public static void Method_2(string text) {...}
}
}
}
如您所见,我有很多单击事件,所以我很好奇我是否可以将它们全部分组在另一个c#文件或一个类或其他东西中
答案 0 :(得分:2)
在您的代码隐藏中,声明当上述任何按钮触发Click
事件时要调用的通用方法。
private void CommonClick(object sender, EventArgs e)
{
}
现在在Properties
窗口中为每个按钮,您可以为所有按钮分配此事件处理程序:
现在,当单击任何按钮时,将调用同一事件处理程序。
如果您想知道哪个按钮被单击,则可以使用按钮Name
,甚至可以使用Tag
属性。
让我们为每个按钮分配一个单独的唯一Tag
。 Tag
是一个属性,您可以在属性窗口中看到每个按钮(以及大多数控件)。
然后,您可以在代码中使用switch-case
语句来确定单击了哪个按钮。
private void CommonClick(object sender, EventArgs e)
{
switch (((Button)sender).Tag)
{
case "B1":
break;
case "B2":
break;
}
}
上面的B1
,B2
等是我分配给每个按钮的标签。
答案 1 :(得分:2)