是否可以对点击事件进行分组?

时间:2018-08-09 19:27:13

标签: c# winforms

我有一个使用各种点击事件并且看起来像这样的项目

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#文件或一个类或其他东西中

2 个答案:

答案 0 :(得分:2)

在您的代码隐藏中,声明当上述任何按钮触发Click事件时要调用的通用方法。

private void CommonClick(object sender, EventArgs e)
{
}

现在在Properties窗口中为每个按钮,您可以为所有按钮分配此事件处理程序:

enter image description here

现在,当单击任何按钮时,将调用同一事件处理程序。

如果您想知道哪个按钮被单击,则可以使用按钮Name,甚至可以使用Tag属性。

让我们为每个按钮分配一个单独的唯一TagTag是一个属性,您可以在属性窗口中看到每个按钮(以及大多数控件)。

然后,您可以在代码中使用switch-case语句来确定单击了哪个按钮。

private void CommonClick(object sender, EventArgs e)
{
    switch (((Button)sender).Tag)
    {
        case "B1":
            break;
        case "B2":
            break;
    }
}

上面的B1B2等是我分配给每个按钮的标签。

答案 1 :(得分:2)

通常在表单设计器中,您双击空的“ click”事件属性以生成新方法,如btn _..._ Click(对象发送者,EventArgs e)。

相反,您可以选择现有方法,因此多个按钮可以调用同一方法:enter image description here

然后在调用的方法中,您可以检查哪个控件触发了此事件:

    private void button1_Click(object sender, EventArgs e)
    {
        if (sender == button2)
        {
            // ....
        }

        if (sender == button1)
        {
            // ....
        }
    }