每一个继承自frmBase的新窗体,都必须实现那几个方法 那就用接口
解决方案 »
- 绘图:如何在自己绘制的图中实现某一图标的移动缩放?
- 查找有无相同数据库名,进入了死循环,谁知道解决方法呀?
- WINDOWS CE .net 4.2手机蓝牙开发
- Comobox下拉内容Update请教!
- Could not load the assembly 'App_Web_*'. Make sure that it is compiled before accessing the page
- 进程间通信问题
- EXECL 读取单元格中数据的问题 在线给分 急急急啊~100
- 如何将UTF-8转换成BIG5或GB2312?
- 水晶报表中、如何加别的控件并在报表中显示
- 如何获取IOException的详细原因
- 部署网站后访问问题
- c#父窗体和子窗体关闭问题
{
}interface InterfaceTest
{
void Add();
void Delete();
}
public partial class frmUser : frmBase,InterfaceTest
{
//都实现了这几个方法
public void Add()
{
//xxx
}
//***
}
2 父类定义一个事件 event, 在单击的时候判断如果事件未赋值, 则调用自己的方法, 否则调用此事件, 子类中将事件赋值为新的函数
{
void Add();
//***
}
public partial class frmBase : Form,IForm
{
public void Add() { }
}然后新窗体继承后,也没提示要实现接口啊
public partial class frmChild : frmBase
{
}
而且,新窗体再继承接口,也没提示要实现。。
public partial class frmChild : frmBase,IForm
{
}
可能我的强迫症吧,我想每继承出一个新窗体后,都会提示我必须要实现这些方法。
可能我的强迫症吧,我想每继承出一个新窗体后,都会提示我必须要实现这些方法。那就给子类再加个接口咯。这样子类就需要实现接口。
public partial class Frm_Main : Form//表示当前的窗体继承于Form类
{
public Frm_Main()
{
InitializeComponent();
}
}
Frm_Inherit窗体修改后的代码如下;
public partial class Frm_Inherit : Frm_Main//继承自基窗体
{
public Frm_Inherit()
{
InitializeComponent();
}
}
Designing Windows Forms with Abstract Inheritance
http://www.steveandrews.me/blog/2008/01/05/designing-windows-forms-with-abstract-inheritanceInheriting a Form from an Abstract Class (and Making it Work in the Designer)
http://www.codeproject.com/Articles/22788/Inheriting-a-Form-from-an-Abstract-Class-and-Makin
{
void Add();
//***
}
public partial class frmBase : Form,IForm
{
public void Add() { }
}然后新窗体继承后,也没提示要实现接口啊
public partial class frmChild : frmBase
{
}
而且,新窗体再继承接口,也没提示要实现。。
public partial class frmChild : frmBase,IForm
{
}
frmBase类不要再去继承接口,frmChild类直接继承frmBase和IForm就会有提示你要去实现了;
因为你基类和子类同时都继承了同一个接口,基类肯定有该接口的实现的,子类再去继承基类的时候子类已经把基类实现接口的方法都给继承下来,这时子类已经有了该接口的实现,所以IDE没有提示实现并且不报错是正常的。
//t是DataTable
t = getData();
//绑定到listview里面
bind();
然后我想要子窗体全都要实现各自的getData()首先frmBase里面必须要有getData的吧
于是就是,子窗体就算继承了接口,因为frmBase已经有了getData,所以也没有提示要实现
既然你不想子窗体直接用,而是要全部重写,你模板里写个方法是要闹哪样,写了也永远不会执行.
这是frmBase里的刷新按钮的代码
public virtual DataTable GetData() { return null; }
//刷新数据
private void toolStripButton4_Click(object sender, EventArgs e)
{
DataTable t = GetData();
//绑定到listview
bind(t);
//编辑和删除按钮在有选中项之前均不可用
tsbEdit.Enabled = false;
tsbDelete.Enabled = false;
}
然后子窗体只要重写一下getData就能显示各自的数据了,就不需要再写刷新按钮的事件处理了。