用一个全局类public Class,把Add()、Delete()、Update()加进去,每次调用时判断当前窗口,或传进参数。
using System;
using System.Collections;namespace Covis
{
public class SysInfo
{
public SysInfo()
{}
public static bool Add()
{
return true;
}
public static bool Delete()
{
return true;
}
public static bool Update()
{
return true;
}
}
}
using System;
using System.Collections;namespace Covis
{
public class SysInfo
{
public SysInfo()
{}
public static bool Add()
{
return true;
}
public static bool Delete()
{
return true;
}
public static bool Update()
{
return true;
}
}
}
1.定义一接口IOperation
2.在接口中定义Add()、Delete()、Update()
3.frmStudent、frmTeacher直接实现接口IOperation的Add()、Delete()、Update()方法
4.根据编辑窗口实例化接口:如IOperation opera = new frmStudent()
5.单击工具栏上 增加、删除、修改 三按钮的时对应于:opera.Add();opera.Delete();opera.Update()
6.over
protected void DoNew()
{
try
{
// 清除当前编辑内容
this.myBind.EndCurrentEdit();
myBind.AddNew();
}
catch (System.Exception eEndEdit)
{
System.Windows.Forms.MessageBox.Show("新建数据失败原因:"+eEndEdit.Message);
}
}protected void DoDelete()
{
DialogResult r = MessageBox.Show ( "是否删除当前记录!" , "删除当前记录!" , MessageBoxButtons.YesNo , MessageBoxIcon.Question ) ;
if (DialogResult.Yes ==r)
{
if ((myBind.Count > 0))
{
myBind.RemoveAt(myBind.Position);
}
}
那么要你其它的窗口只要把绑定设好,它就会对相应的绑定做增加,删除,修改动作,不用管其它的
}
一、MID窗口工具栏上有 增加、删除、修改 三按钮对就菜事件单委托如下
private void EditCard(object sender, System.EventArgs e)
{
if (this.ActiveMdiChild != null)
{
System.Windows.Forms.MenuItem mnuitm = new System.Windows.Forms.MenuItem();
frmDataBind frmNewDataBind = new frmDataBind();//我的数据绑定类 mnuitm = (System.Windows.Forms.MenuItem)sender;
frmNewDataBind = (frmDataBind)this.ActiveMdiChild;
//调用数据绑定类的对应方法
switch (mnuitm.Text) //下次改tag属性,适应国际化
{
case "增加(&A)":
frmNewDataBind.AddNew();
break;
case "修改(&M)":
frmNewDataBind.Modify();
break;
case "删除(&D)":
frmNewDataBind.Delete();
break;
}
}}二、我的数据绑定类frmDataBind
1、定义两个对象
IOperation iopt; //数据操作接口,供三个方法使用
private Form m_frmOperationEditCard; //数据操作窗口,实现属性过程
2、增加三个方法供外部调用,如下:
/// <summary>
/// 增加
/// </summary>
public void AddNew()
{
//iopt.IsAddNew = true;
//iopt.IsChangedData = false;
iopt.AddNew();
} /// <summary>
/// 删除
/// </summary>
public void Delete()
{
//iopt.IsAddNew = false;
//iopt.IsChangedData = false;
iopt.Delete();
} /// <summary>
/// 修改
/// </summary>
public void Modify()
{
//iopt.IsAddNew = false;
//iopt.IsChangedData = false;
iopt.Modify();
}3、支持数据绑定实例化frmDataBind时的属性,用
frmDataBind1.EditCardForm = new 编辑窗口();
其中编辑窗口()类重写了接口的三个方法
属性如下:
/// <summary>
/// 数据操作窗口,它有操作的接口
/// </summary>
public Form EditCardForm {
set
{
this.m_frmOperationEditCard = value;
this.iopt = (IOperation)value;
}
get
{
return this.m_frmOperationEditCard;
}
}三、数据绑定//在窗口网格中显示满足给定SQL的记录
private void DataBinding(object sender, System.EventArgs e)
{
string strSQL; //定义显示数据的SQL语句
string strFormCaption; //窗口标题 System.Windows.Forms.MenuItem mnuitm = new System.Windows.Forms.MenuItem(); mnuitm = (System.Windows.Forms.MenuItem)sender; //frmDataBind 是我写的一个类,只要传DataSource就可显示数据信息
frmDataBind frmNew = new frmDataBind(); switch (mnuitm.Text)
{ case "学生表":
strSQL = "SELECT * FROM 学生表";
strFormCaption = "学生花名册";
frmNew.EditCardForm = new 学生表编辑窗口();
break;
case "教师表":
strSQL = "SELECT * FROM 教师表";
strFormCaption = "教师花名册";
frmNew.EditCardForm = new 教师表编辑窗口() ;
break;
} frmNew.DataSource = strSQL ;
frmNew.Text = strFormCaption ;
frmNew.MdiParent = this;
frmNew.Show();
}四、定义接口,包括三个方法
using System;namespace Zfy
{
/// <summary>
/// 接口IOperation定义数据编辑窗口的行为Add()、Delete()、Update()
/// </summary>
public interface IOperation
{
int AddNew();
int Delete();
int Modify();
/*
bool IsAddNew
{
set;
get;
} bool IsChangedData
{
set;
get;
} string ID
{
set;
get;
}
*/
}
}
五、定义"学生表编辑窗口"、"教师表编辑窗口"
这只不再说明具体实现,只说明它们继承于以上是我的实践且成功运行,有更好的方法或建议希望大家email
[email protected]
再次感谢大家!!!