C/S中的MVC(2) 荣

using System;
using System.Data;
using System.Windows.Forms;

using Business;

namespace Business.Base
{
 /// <summary>
 /// Description:Form窗体的基类。
 ///              在各个窗体中,有一个DataSet用来存储取得的初始数据,
 ///              该DataSet用dataSet表示。
 ///              在dataSet中,包含了一个名称为Meta的DataTable,
 ///              该DataTable用dataTable表示。
 ///              当调用该类时,首先给dataTable添加一行数据,
 ///              其中存储了该窗体的名称。
 ///              在本类中,设置了抽象函数SetColumn,它的功能就是给dataTable
 ///              设置其它需要的列。另外,本类还有一个Obj变量,用来传输其它
 ///              初始化时候用到的数据。
 ///              抽象函数Initial的作用是初始化窗体的控件。
 /// </summary>
 public abstract class FormBN
 {
  /// <summary>
  ///初始化的时候,用来传递数据的对象。
  /// </summary>
  private object Obj;

  /// <summary>
  /// Description:初始化窗体。
  /// </summary>
  /// <param name="ds">存储初始数据的DataSet</param>
  protected abstract void Initial(DataSet ds);

  /// <summary>
  /// Description:设置DataSet中Table的列。
  /// </summary>
  /// <param name="ds">存储初始数据的DataSet</param>
  protected abstract void SetColumn(DataSet ds);

  /// <summary>
  /// Description:构造函数。
  /// </summary>
  /// <param name="ds">存储数据的DataSet</param>
  /// <param name="form">当前窗体</param>
  /// <param name="Object">初始对象</param>
  public FormBN(DataSet ds, Form form, object Object)
  {
   ds = GetData();

   Obj = Object;

   DataRow dr = ds.Tables[FormCommonBN.DTNAME].NewRow();
   dr[FormCommonBN.FORMNAME] = form.Name;
   ds.Tables[FormCommonBN.DTNAME].Rows.Add(dr);
  }

  /// <summary>
  ///  Description:取得窗体初始化数据。
  /// </summary>
  /// <param name="ds">存储数据的DataSet</param>
  public void GetInitialData(DataSet ds)
  {
   // 如果DataTable为空,则出错
   if ((ds.Tables[FormCommonBN.DTNAME] == null) ||
    (ds.Tables[FormCommonBN.DTNAME].Rows.Count<= 0))
   {
    throw new Exception("没有取得需要的数据。");
   }

   // 初始化窗体
   Initial(ds);
  }

  /// <summary>
  /// Description:取得页面需要的DataSet。
  /// </summary>
  /// <returns>页面需要的DataSet</returns>
  public DataSet GetData()
  {
   DataSet ds = new DataSet();
   ds.Tables.Add(FormCommonBN.DTNAME);

   //存储页面名称
   ds.Tables[FormCommonBN.DTNAME].Columns.Add(FormCommonBN.FORMNAME,typeof(string));

   //设置其它列
   SetColumn(ds);
   return ds;
  }
 }
}

原文地址:https://www.cnblogs.com/admin11/p/213594.html