日期:2014-05-19  浏览次数:20963 次

继承类的方法
我有两个模块:管理模块(frm_guan_base)和人事模块(frm_renshi_base),一个类(myConnQuery),在类(myConnQuery)有一个方法(事件)是用来自动生成按钮的,如:
public   Panel   createBtn(......)
{
    Button   myBtn   =   new   Button();
    myBtn.Size   =   new   Size(65,23);
    myBtn.Location   =   new   Point(456,56);
    ...
    ...
    myBtn.Click   +=   .......(myClick);     //我一会要问的就是这里
    this.panel1.Controls.Add(myBtn);
    return   panel1
}

public   void   myClick()
{
    //在这里没有做什么动作
}
      我点击   管理模块   调用这个方法根据表结构生成很多按钮(功能模块用的),如:单位录入,员工信息,客户录入...;点击   人事模块   调用同样的方法又生成很多按钮,如:人员调动,员工信息,工资情况....
      现在各个功能模块的按钮我是生成出来了,但是点击按钮时就没有跳出对应的功能模块,如:点击   单位录入   应该要出   单位录入   的界面才对.
      原因是我不懂写各个功能模块的点击事件,一   因为按钮是自动生成的,二   是因为生成的按钮在一个公用类(myConnQuery)里,怎么用它的点击事件呢??
      现在我想问的是:怎么在各个模块,如管理模块\人事模块   继承类(myConnQuery)自动生成按钮的点击事件??即点击管理模块下的   单位录入   就跳出   单位录入界面.
      (注意到:管理模块有   员工信息,人事模块有   员工信息,这两个模块是不一样的.)

------解决方案--------------------
给按钮的click事件里面加个代理,在另一个类里面实现那个代理不就得了。
------解决方案--------------------
你应该把问题简单化来提问:)

没有看出你这个问题倒底在问什么,显示相应的窗体和继承有什么关系呢?
如果你要自动的来显示不同的窗体,你可以在生成按钮的时候把要调用的窗体所在的DLL,类的全称都记入这个Button,然后在Click中取出使用利用反射的技术来建立类的实例.
------解决方案--------------------
大致理解意思.

我想应该在动态创建的按钮和myClicks事件里做文章:\
1:创建按钮:
public Panel createBtn(......) '这里的....应该有加个tag(可以是formName;Enum....)
{
//...
myBtn.Tag = tag;
}
public void myClick(object sender ,EventArgs e)
{
Button btn = (Button)sender;
if(btn.Tag == null)return;

Form frmEdit = null;
switch(btn.Tag.ToString())//假设定义的是formName,如里是枚举类型就转换成相应类型
{
case "frm_guan ":
frmEdit = new frm_guan_base();//为...录入界面
break;
.....
}
if(frmEdit == null)return;

//其实处理
frmEdit.ShowDialog();
...
}

------解决方案--------------------
自动生成按钮以要调用模块的名字命名
Button myBtn = new Button();
((Button)myBtn).Name = 调用模块的名字;
自动生成按钮的时候调用click事件的处理函数
((Button)myBtn).Click += new System.EventHandler(cpButtons_Click);

然后为自动生成按钮写click事件
private void cpButtons_Click(object sender, EventArgs e)
{
Button myBtn = (Button)sender;
switch(myBtn.Name.ToString())
{
case "人事模块 ":
Form frm = new 人事模块();//为...录入界面
frm.show()
break;
.....
}
}