winform主窗口在一个执行程序包中,子窗口的form在不同的DLL项目中。
希望打开不同的子form时将一个方法关联到主窗口的工具栏按钮上。
看了一些例子,好像都是通过工具栏合并或替换来实现的。能不能直接替换方法?
最好能有简单的代码。
谢谢

解决方案 »

  1.   

    如果子窗口最大化后不美观可以参考;http://blog.csdn.net/FlashElf/archive/2005/03/13/318852.aspx 我的文章!
    可能格式改版后乱了,不过copy到VS 里可以搞好的
      

  2.   

    试了一下你的方法,好像和我的想法有些不同。你这样做的话,就是把工具栏放在子form中。但是在主form中还有很多其他的功能键是不随着子form的变化而改变的。
    我的想法是只改变那些需要变动的按钮的方法。
      

  3.   

    思想方法:在主窗体中找到当前活动窗体,然后从数据库中拿到此窗体的权限,按权限设置主窗体的工具栏就OK了示例代码(本人项目代码):
       private void frMain_MdiChildActivate(object sender, EventArgs e)
            {
                try
                {                Form tempChild = this.ActiveMdiChild;
                    BaseForm.StandBaseForm frm;
                    frm = (BaseForm.StandBaseForm)tempChild;
                    if (tempChild == null) { SetToolModeRead(); }
                    else
                    {
                        frm.RightListID = frm.Name.Trim();
                        RightSet();
                        if (frm._SetToolModeStatus == 2)
                        {
                            RightSet();
                            //SetToolModeRead();                      
                        }
                        else if (frm._SetToolModeStatus == 3)
                        {
                            RightSet();
                            SetToolModeNew();                       
                        }
                        else if (frm._SetToolModeStatus == 4)
                        {
                            RightSet();
                            SetToolModeEdit();                       
                        }
                      
                    
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }挺简单的!
      

  4.   

    我现在用一个方法。
    定义一个接口
        public interface IVouchProcess
        {
            void VouchNew(object sender, EventArgs e);        void VouchModify(object sender, EventArgs e);        void VouchDelete(object sender, EventArgs e);        void VouchConform(object sender, EventArgs e);        void VouchCancel(object sender, EventArgs e);
        }然后全部的子form继承这个接口在主form中        private void MainForm_MdiChildActivate(object sender, EventArgs e)
            {
                try
                {
                    //Form tempChild = this.ActiveMdiChild;
                    BaseForm.IVouchProcess tempChild = (BaseForm.IVouchProcess)this.ActiveMdiChild;
                    tbNew.Click += new EventHandler(tempChild.VouchNew);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }         }
    问题是这个click事件是不停的将方法添加上去的。
    有没有办法在添加方法前先将原来的方法清空。