c#下利用委托为动态控件添加响应事件

小白学码,正在学习委托,遇到难题,百思不解。请高手帮忙看看下面代码存在问题。
两个窗体,Form1、Form2,Form1中有一个Button控件。一个外部类:文件夹modules下Btnclass.cs。
意图:单击Form1窗体Button,触发Btnclass类往Form2批量添加动态button控件,并往控件添加响应事件。
难题:已实现在Form2中生成控件,但动态控件单击不响应。
Form1代码:
namespace weituo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

    private void button1_Click(object sender, EventArgs e)
    {
        Modules.Btnclass.AddBtn(this,e);
    }
}
class QShow
{
    public delegate void AddBtnEventHander(object sender, EventArgs e);
    public event AddBtnEventHander AddBtned;
}

}

Btnclass代码:
namespace weituo.Modules
{
class Btnclass
{
public static void AddBtn(object sender,EventArgs e)//(Form1 objForm)
{
QShow qshow= new QShow();
Form2 form2 = new Form2();
for (int Btnnum = 0; Btnnum <= 8; Btnnum++)
{
Button pb = new Button();
pb.Name = "B" + Btnnum.ToString();
pb.Text = "Button" + Btnnum.ToString();

            System.Drawing.Point p = new Point(12, 13 + Btnnum * 30);//创建一个坐标,用来给新的按钮定位
            pb.Location = p;//把按钮的位置与刚创建的坐标绑定在一起
            form2.Controls.Add(pb);
            qshow.AddBtned += new QShow.AddBtnEventHander(Btn_Click);//将按钮的方法绑定到按钮的单击事件中b.Click是按钮的单击事件
            form2.Show();

        }

    }


         private static void Btn_Click(object sender, System.EventArgs e)
    {
        Button pb = (Button)sender;//将触发此事件的对象转换为该Button对象
        //if(pb.Name=="B1")
            MessageBox.Show("" + pb.Name);
    }



}

}

加一行

 pb.Click += Btn_Click;