a simple navigation framework

  如果不想使用.net的webparts里的向导控件,可以自己设计一个简单的。我设计一个简单的向导框架,思路是这样的:

1. 首先会有一个向导类,我把它叫Navigation, 向导类有一个容器,里面包括本次向导中所有窗体。向导提供了向导框架中所有核心功能,比如:start, next step,previous step, finish。

2. 设计一个窗体基类,暂且叫BaseForm.所有向导窗体都继承这个基类,基类必须预留一些钩子(在C#语言中可以设计为virtual或者abstract,c++可为virtual),让各个派生的子类窗体去执行具体的窗体逻辑。比如:需要更新窗体title,处理业务逻辑等操作,另外,该窗口包含了一些向导控件(Next ,Previou,Finish,Cancel)。最后,必须把Navigation与窗体基类做关联。

3. 把所有向导窗体继续自BaseForm,并实现基类的钩子方法。

 

下面是用C#写的主要框架代码:

public class Navigation

{

    public List<BaseForm> container;

    public int currentIndex;



    public void Start() {currentIndex = 0; container[currentIndex].Show();}

    public void Finish() {currentIndex = container.Count-1;}

    public void Next();

    public void Previous();



     public Navigation()

     {

            currentIndex = 0;

            container  = new List<BaseForm>();

      }



     public void InitNavContainer()

     { 

            // TODO: Add your wizard forms step by step

            container.Add(.....)

     }



    public int IsHeadForm()

    {

          return (currentIndex == 0);

    }

     

    public int IsTailForm()

    {

          return (currentIndex == container.Count - 1);

    }

}

 

下面是窗体基类:

   1:  public class BaseForm : Form
   2:  {
   3:        public abstract void DoSomething();
   4:        public Button btnNext;
   5:        public Button btnPrevious;
   6:        public Button btnFinish;
   7:        public Button btnCancel;
   8:   
   9:        public Navigation navigation;
  10:   
  11:       public BaseForm(Navigation _navigation)
  12:      {
  13:            navigation = _navigation;
  14:       }
  15:   
  16:      public void OnNext()
  17:     {
  18:            navigation.Next();
  19:     }
  20:   
  21:     ........
  22:  }

  

子窗体代码很简单,所以代码都是直接写的,没有经过编译器compile过。 c# sucks.

你可能感兴趣的:(framework)