继承类的方法
我有两个模块:管理模块(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;
.....
}
}