日期:2014-05-17  浏览次数:20954 次

如何让一个按钮对应多个处理情况?
各位高人:
  菜鸟一枚,请问如下问题:
  工具栏上有一个确定按钮,在不同的子窗口下,点击“确定”按钮实现不同的处理。即:同一个确定按钮如何处理,在不同的子窗口界面下的情况。举例如:
   如果当前激活子窗口为“查询工单”,我点击确定,就调用相应的函数查询工单;若当前激活子窗口为“查询客户”,就去查客户。
   如果用类似if。。else的语句似乎能处理,总觉不太好,是否有更好的处理模式?

请高人出手!

------解决方案--------------------
1.写一个类继承Form类,如BaseChildForm,其中有个方法,  如ButtonClick
2.每个子窗体继承BaseChildForm,重写ButtonClick方法,内容为“确定"按钮点击事件内容
3.在父窗体中的”确定“按钮事件中写

baseChildForm.ButtonClick();//baseChildForm为子窗体类对象
------解决方案--------------------
楼上的方法蛮好的,类似于依赖注入(DI),还有一种方法就是使用委托(delegate),我就针对委托写个例子吧,比如:
我当前菜单是:
Menu currentMenu = Menu.Menu1;

在不使用委托的时候你需要写if else或者switch语句:
        static void TestWithoutDelegate(Menu menu)
        {
            switch (menu)
            {
                case Menu.Menu1:
                    Console.WriteLine("菜单1");
                    break;
                case Menu.Menu2:
                    Console.WriteLine("菜单2");
                    break;
                case Menu.Menu3:
                    Console.WriteLine("菜单3");
                    break;
                default:
                    break;
            }
        }

然后调用之:
TestWithoutDelegate(currentMenu);


如果使用委托,那么你就需要多写几个方法,类似于:
        static void Menu1()
        {
            Console.WriteLine("菜单1");
        }

        static void Menu2()
        {
            Console.WriteLine("菜单2");