首先看一下.net自带的DataGrid,想想如何应该怎样才能实现那样的展现形式。

1)需要以网格形式显示内容。

2)网格的宽度、高度可以定义。

3)可以显示滚动条。

4)单击可以选中某个单元格。

当然以上只是简单的功能描述,DataGrid包含的功能远远大于这些。

那如果让我们实现以上四点,该怎么做呢?这里面我们提到一个概念叫文档视图。意思就是用户界面中显示的数据不直接放置到控件代码中,而按照逻辑层次关系建立一种文档对象模型,使用一个个对象映射到要显示的数据中的每一部分。说白了类似于WPF里面的数据绑定。

依照这种方式设计:我们可以构建类似Cell-->Row-->Table的文档模型映射到控件的表格中去,这样刚好可以满足需要。最终的设计结果如图所示。

设计部分:

1)按照这样的设计思路,我们先建立如下的三个对象类。

    /// <summary>
/// 单元格对象
/// </summary>
[Serializable]
public class DataCell
{ }
   public class DataRowArea:System.Collections.CollectionBase
{ }
public class DataDocument:System.Collections.CollectionBase
{ }

他们之间的结构关系。各位应该很清楚。

2)接下来开始创建自定义控件CellViewControl,定义行高RowHeight,网格颜色,背景色,文档属性Document。

3)填充数据。

4)绘制用户界面。

5)添加鼠标事件。

制作类似DataGrid自定义控件的更多相关文章

  1. C#利用API制作类似QQ一样的右下角弹出窗体

    C#利用API制作类似QQ一样的右下角弹出窗体 (2009-03-21 15:02:49) 转载▼ 标签: 杂谈 分类: .NET using System;using System.Collecti ...

  2. 制作类似ThinkPHP框架中的PATHINFO模式功能(二)

    距离上一次发布的<制作类似ThinkPHP框架中的PATHINFO模式功能>(文章地址:http://www.cnblogs.com/phpstudy2015-6/p/6242700.ht ...

  3. 制作类似ThinkPHP框架中的PATHINFO模式功能

    一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo ...

  4. ubuntu:如何制作类似jeso的系统?

    chroot 下载ubuntu的core包或base包 chroo后,先安装grub,再kernel,基本就ok了! 提示:mount --bind /proc  newroot/proc 可能的问题 ...

  5. 利用:before和:after伪类制作类似微信对话框

    今天学到了怎么做一个小三角形,进而结合其他属性把类似微信对话框的图形做出来了. 先做出如下形状: .arrow { width: 30px; height:30px; border-width:20p ...

  6. Android 制作类似支付圆圈和打钩界面ProgressWheel

    首先要说明的是,制作圆圈旋转的效果并不是博主做的,是参照了github上的一个代码,只是在上面添加了修改,对其优化并增加了一个打钩的动画. 先来看下效果,1+的手机获取root权限真是难,没法录屏,只 ...

  7. Unity3D制作类似吃鸡的小地图

    先看效果图: 实现的效果就是右上角的一个小地图,会随着人物的移动而移动,显示人物的方向,并且可以展示地图设定范围的其他的玩家 制作起来也很简单,不需要任何代码.主要原理就是先创建Render Text ...

  8. 博主教你制作类似9patch效果的iOS图片拉伸

    下面张图片,本来是设计来做按钮背景的:   button.png,尺寸为:24x60 现在我们把它用作为按钮背景,按钮尺寸是150x50: // 得到view的尺寸 CGSize viewSize = ...

  9. iOS UITableView制作类似QQ好友列表视图

                #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDele ...

随机推荐

  1. Collection中的排序

    我们来了解一下Collection的框架与接口: Set接口下面已经有SortedSet接口,其中提供了很多自带排序的实现类,例如ThreeSet,用户还能够自定义比较器来规定自己的排序规则. 本篇着 ...

  2. 数据库事务故障恢复undo日志检查点

      checkpoint 检查点 checkpoint,即检查点.在undolog中写入检查点,表示在checkpoint前的事务都已经完成commit或者rollback 了,也就是检查点前面的事务 ...

  3. Spark 3000门徒第二课scala面向对象总结

    昨晚听了王家林老师3000门徒spark系列课程的第二课,讲述了scala面向对象知识,并且带着过了一遍Spark核心类:SparkContent,RDD的代码,下面写一下心得: RDD是抽象类,实现 ...

  4. verilog运算符及表达式

    1.运输符 算术运算符(+,-,X,/,%) 赋值运算符(=,<=) 关系运算符(>,<,>=,<=) 逻辑运算符(&&,||,!)//与或非 条件运算符 ...

  5. JS中showModalDialog 详细使用

    基本介绍: showModalDialog() (IE 4+ 支持) showModelessDialog() (IE 5+ 支持) window.showModalDialog() 方法用来创建一个 ...

  6. Bootstrap入门一:Hello Bootstrap

    一.Bootstrap简介 Bootstrap,来自 Twitter,是目前很受欢迎的前端框架.Bootstrap是基于 HTML5.CSS3和Javascriopt开发的,它在 jQuery的基础上 ...

  7. mobiscroll 控件的使用(手机端日历控件)

    先上一张图吧: 控件的下载地址:http://www.kuitao8.com/20140604/2615.shtml 文档API地址:http://docs.mobiscroll.com/2-13-2 ...

  8. WordPress按钮秒支付插件发布,支持微信支付,支付宝,银联,京东,苏宁,易宝支付

    痛点: 我们用WordPress建设网站和开发移动应用,有时候我们其实不需要太多的流程,只是需要一个收款通道,但是可能对支持的渠道更加关注,特别是手机应用.所以WordPress按钮秒支付插件诞生了, ...

  9. IIS OCIEnvCreate failed with return code -1

    现象:windows server2008服务器,MVC使用NHiberate连接Oracle11g,程序部署到IIS后无法访问数据库,抛上述异常:在服务器上安装VS调试可以访问数据库 解决方法:连接 ...

  10. 01.安装Memcached

    1.安装Memcached 1.下载Memcached及其依赖 下载memcached-1.4.24.tar.gz和libevent-2.0.22-stable.tar.gz文件并解压如下: [liz ...