学习C/S结构开发框架从MDI起步

  学习C/S结构开发框架从MDI起步

学习C/S结构开发框架从MDI起步


C/S开发框架MDI架构及Toolbar按钮共享



MDI多文档界面功能介绍


用户界面负责处理数据输入和数据采集等功能,设计一套人性化的UI十分重要。总结以前的设计经验和用户反馈的信息,前台基本要求是操作方便,界面友好,功能强大,响应快速。基于WinForm大多数应用软件是使用MDI(多文档界面)作为系统架构。这套架构最大的特点是用户可以同时浏览和操作多个窗体的数据,操作性特别强且简单易用。


Office是家喻户晓装机必备,借鉴它的强大功能和丰富的用户体验作为C/S开发框架的主要设计思路。主窗体Toolbar(工具条)接口设计是框架核心技术之一,所有子窗体共享使用主窗体上的工具条,当切换子窗体时Toolbar按钮的状态随之切换,互不干预。



Toolbar按钮共享


贴图图片




MDI程序


贴图图片



MDI多文档界面由多个窗体组成,其中有一个窗体称为MDI父窗体,可以把MDI父窗体理解为一个容器,在容器内的其他窗体称为MDI子窗体。子窗体的活动范围限制在父窗体这个容器内,无法将子窗体移动到主窗体之外。MDI主要特点是父窗体可以控制和管理所有子窗体,在设计上我们需要抽象出一组接口来规范子窗体的操作,主窗体严格控制这些接口。但是子窗体功能不一,有些子窗体负责数据操作,有些子窗体用于打印报表,那么我们如何来规范这些功能呢?如何共享使用主窗体上的按钮呢?至于这个问题,可以通过设计接口来解决。首先将子窗体按功能分类,分类别设计接口,比如数据操作窗体设计一个支持数据操作的接口,如IOperateData,支持打印功能的窗体接口为IPrintable等等。



示范程序截图

三个子窗体共用主窗体的按钮。



数据窗体按钮状态

贴图图片



打印窗体按钮状态



贴图图片



实现两种策略创建主窗体的工具栏



1. 创建.Net ToolStrip组件

贴图图片



2.创建自定义组件




贴图图片



策略模式应用:


/// <summary>
/// 工具栏接口
/// </summary>
public interface IToolbarRegister : IDisposable
{
   void RegisterButton(IList buttons); //注册按钮
   void Dispose(); //重置工具栏按钮
   
   IButtonInfo CreateSeperator();//创建分隔按钮,如"|"
   
   /// <summary>
   /// 创建工具栏上的按钮.
   /// </summary>
   /// <param name="name">按钮名称:如btnSave,btnClose</param>
   /// <param name="caption">按钮名称</param>
   /// <param name="image">按钮图片</param>
   /// <param name="size">按钮大小</param>
   /// <param name="clickEvent">按钮的Click事件</param>
   /// <returns></returns>
   IButtonInfo CreateButton(string name, string caption, Bitmap image, Size size, OnButtonClick clickEvent);
}

// 来源:www.CSFramework.com, C/S结构框架学习网


 


/// <summary>
/// 我的自定义工具栏
/// </summary>
public class MyToolbarRegister : IToolbarRegister
{
   Panel _pnl = null;
   Form _owner = null;
   
   public MyToolbarRegister(Form owner)
   {
      _owner = owner;
      _pnl = new Panel();
      _pnl.Height = 36;
      _pnl.Dock = DockStyle.Top;
      owner.Controls.Add(_pnl);
      owner.Controls.SetChildIndex(_pnl, 1);
   }
   
   public void RegisterButton(IList buttons)
   {
      _pnl.SuspendLayout();
      
      _pnl.Controls.Clear();
      
      int top = 2;
      int left = 3;
      int margen = 4;
      foreach (IButtonInfo b in buttons)
      {
         Control ctl = b.Button as Control;
         ctl.Left = left;
         ctl.Top = top;
         _pnl.Controls.Add(ctl);
         left = ctl.Width margen;
      }
      _pnl.ResumeLayout();
   }
   
   public void Dispose()
   {
      _owner.Controls.Remove(_pnl);
   }
   
   public IButtonInfo CreateSeperator()
   {
      return new MyButtonSeperator(_pnl);
   }
   
   public IButtonInfo CreateButton(string name, string caption, Bitmap image, Size size, OnButtonClick clickEvent)
   {
      return new MyButton(_pnl, name, caption, image, size, clickEvent);
   }
}

// 来源:www.CSFramework.com, C/S结构框架学习网


 


private void frmMDI_Load(object sender, EventArgs e)
{
   this._MdiToolbar = new ToolStripRegister(this);
   
   // this._MdiToolbar = new MyStoolRegister(this);
   
   this.RegisterMdiButtons();
}

// 来源:www.CSFramework.com, C/S结构框架学习网




C/S开发框架MDI架构及Toolbar按钮共享


http://www.csframework.com/archive/1/arc-1-20110401-1276.htm




C/S框架网|原创精神.创造价值.打造精品


扫一扫加作者微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务


示范程序下载 (Source for VIP)

版权声明:本文为CSFramework文库发布内容,转载请附上原文出处连接
C/S框架网
发表评论

评论内容
昵称:
关联文章

学习C/S结构开发框架MDI起步
C#多文档界面(MDI)系统框架 (原创在C/S框架网!)
C/S系统开发框架多级明细表(三级表/主从表)数据结构参考
C/S开发框架MDI架构及Toolbar按钮共享(原创)
C#.Net培训大纲(学习重点)
C#开发MDI架构+Access数据库应用程序(增删改查)
学习C#.NET基础知识(学习重点请下载附件)
MDI程序-TabbedMdi模式与窗体层叠互换功能(C/S框架网)
不错的框架,这套开发框架学习吗?
MdiTools.cs类下载|CSFramework版本V5.0|C/S框架
C/S框架用来开发一个新模块,这个学习得花多少时间?
C/S结构快速开发框架使用的DevExpress常用组件
C#.Net适合开发C/S结构的系统吗?
C#.Net C/S结构开发框架中BLL层的作用
C/S结构系统框架 - 精简版
C/S结构系统框架 - 标准版
C/S结构系统框架-高级版
C#.Net CS开发框架实现多语言(C/S框架网)
C# C/S结构快速开发框架标准版V2.2 - 视频介绍
CSFramework开发框架ADO.NET学习要点