你提的问题就我看来设计思想上就存在问题,
如果你一定要这么做:把 A 的Delegate在Form B 中做为事件解发的话 
我写了一个简单的示例:
public  class Form1 : Form
    {
               voidObjectEventArgs voidEvnet  ;
        public Form1() //这里的Form1就是你的 A
        {
            //InitializeComponent();            Click +=new EventHandler(Form1_Click);
            voidEvnet = new voidObjectEventArgs(Form1_Click) ;            Type typ = typeof(B);
            ConstructorInfo constructor = typ.GetConstructor(Type.EmptyTypes);
            object myForm = constructor.Invoke(null);
            EventInfo ei = typ.GetEvent("myClick", BindingFlags.CreateInstance | BindingFlags.Instance | BindingFlags.Public);
            //MessageBox.Show((ei == null ? "null" : "NoNull"));
            Delegate d = Delegate.CreateDelegate( typeof(voidObjectEventArgs), this, "Form1_Click"); //在B窗口调用本窗口的事件
            ei.AddEventHandler(myForm, d);            B ThisForm2 = myForm as B;
            ThisForm2.Text = "B窗口";
            ThisForm2.Show();
           
        }        void Form1_Click(object sender, EventArgs e) //在B窗口调用本窗口的事件
        {
            MessageBox.Show("Form1_Click");
        }      
       
        
    }    public delegate void voidObjectEventArgs(object obj, EventArgs e);
    public class B : Form
    {
        
        public event voidObjectEventArgs myClick;        public B()
        {
            Click += new EventHandler(Form2_Click);        }        void Form2_Click(object sender, EventArgs e)
        {
            if (myClick != null) myClick(sender, e);
        }        
    }//代码可以运行