问题1,如题,
问题2,如何在子窗体中设置主窗体按钮的有效性,能做到吗?

解决方案 »

  1.   

    1、C# MDI窗体工具栏合并子窗体工具栏
    http://hi.baidu.com/helmsman88/item/fc0a3f0cfeb45ae3f55ba679
    2、将主窗体按钮(或主窗体)作为子窗体构造函数的参数传进来,就可以控制了。
      

  2.   

    因为都是对数据的操作(新增、修改、删除),所有子窗体都是用到这几个按钮,
    所以子窗体我本身没添加工具栏,所有子窗体都共有MDI窗体的工具栏!
    不存在合并的问题,这又要怎样处理?
      

  3.   

    通过焦点判断,获取当前sender
      

  4.   

    这是非常基本的面向对象设计模式。我给你举个例子:public interface IDrawFlowDiagrams
    {
        void SetDatas(ObservableCollection<MyOrg> datas); //通知子窗体用此数据初始化界面
        void UpdateLayout();  //通知子窗体必须刷新一次    event EventHandler HideButton1;  //子窗体告诉主窗体禁用按钮
        event EventHandler HideButton2;
        event EventHandler HideButton3;    event EventHandler DisplayButton1;   //子窗体告诉主窗体启用按钮
        event EventHandler DisplayButton2;    event EventHandler DatasChanged;  //子窗体告诉主窗体数据datas集合已经被它更新了}当你设计主窗体时,你不知道将来要设计哪些子窗体,但是你知道要跟子窗体按照这个接口来通讯!这就是设计!上面的接口只是我随便编的。真正应该包括什么内容,你自己设计。但是关键是基于接口来进行设计的概念和意识要有!
      

  5.   

    设计上在csdn我们在90%的时间里是跟各种错误的思路“周旋着”。浪费自己的时间是为了什么呢?因为不想看到招聘时越来越多的.net程序员连点概念都没学到就四处找工作。而更多的人看不起csdn,觉得它水平太低,不值得花时间在这里。所以这个相互的,如果你看到有不到10%的帖子里有些正规的软件工程知识,应该把自己的变成习惯暂时忘掉,研究一下简洁实用的工程知识。
      

  6.   

    在一个比较重要的项目中,如果你对设计师大叫“将主窗体按钮(或主窗体)作为子窗体构造函数的参数传进来啊!”的时候,我想对方想杀了你的心都有。不仅仅是技术上的问题,更主要地是,这种人往往就是暗中用代码毁坏产品的罪魁祸首。这种事情每出现一次就会加剧一次恶性循环,很快这个产品就成了高度耦合、诡异地相互牵制、无法复用的东西了。你的子窗口就应该实现规定的接口,子窗口无需并且甚至也没有权利去纠结宿主调用者是监听 HideButton1 或者其它任何事件之后做什么,它应该为了产品架构做一份贡献——就是做好自己的事件通知工作而不是去操作人家调用者内部的什么控件。事实上,这也是给所谓子窗口免除了责任。