Henry手记— WinForm Datagrid结构剖析(一)-Windows开发-.NET教程-

Henry手记— WinForm Datagrid结构剖析(一)
                韩睿 (2002-11-14)

早就想动手写这个专题,但一直有疑惑自己对于.net的winform中的Datagrid是不是已经能够进行全面的剖析。但近来问起相关问题的人越来越多,一来是使用.net的程序员在增多,二来是大家对Datagrid的使用已经摆脱了最初的显示数据的需求,想要进行高级一点的使用,就应该对Datagrid的结构有一个充分的认识,本文希望能够给有这方面需求的朋友一点小帮忙。
一、    基本结构
从外形上看,Datagrid是由多个表(table)组成的,table是由行(row)与列(column)组成的,行与列的交互,组成的一个个单元(cell)。我们的需要就是能控制每一个cell的变化,从而使row与column发生变化,最终形成table的变化。这每一种变化都可视为是Datagrid中table的一种风格格式(style)。
我们在往form上部署Datagrid控件后,会在其属性窗口下方会出现“自动套用格式”,它们的变化多是背景色(Backcolor)与前景色(Forecolor)与字体(Font)的变化。经过本文的讲述后,您将能够实现更多的格式变化。
描述基本结构,首先请看图1显示的内容:

但是,Datagrid并不能直接写入数据,在图1中显示的数据是由datagrid的datasource(数据源)决定的。而这个datasource是支持IEnumerable接口的对象,比如:Arraylist、Collection、Dataview、Datarow、Datatable等等。(这个问题不是本文讨论的重点,暂略过)
那么Datagrid的结构究竟是怎么样的?我尝试的画了一个结构图如图2所示:
为清晰所见,我们主要讨论Datagrid->DatagridTableStyle->DatagridColumnStyle这一支。我们平常所看到的默认结构Datagrid,即把DatagridColumnStyle设定为DatagridTextBoxColumn列结构,把datagrid的列设为由textbox组成。从而我们就可以看到图1显示出来的那种效果,每一个cell里都是一个textbox。同理,我们就知道如果把某一列的DatagridColumnStyle设定为DatagridBoolColumn列结构,就可以在该列中用checkbox控件显示与更改boolean类型的值了。我们甚至可以自定义某一列的列类型,加入combox等等,这方面内容在后文会有详述。

时间: 2024-12-10 15:39:02

Henry手记— WinForm Datagrid结构剖析(一)-Windows开发-.NET教程-的相关文章

Henry手记— WinForm Datagrid结构剖析(一)

Henry手记- WinForm Datagrid结构剖析(一)                                     韩睿 (2002-11-14) 早就想动手写这个专题,但一直有疑惑自己对于.net的winform中的Datagrid是不是已经能够进行全面的剖析.但近来问起相关问题的人越来越多,一来是使用.net的程序员在增多,二来是大家对Datagrid的使用已经摆脱了最初的显示数据的需求,想要进行高级一点的使用,就应该对Datagrid的结构有一个充分的认识,本文希望能

Henry手记 - Datagrid键盘事件响应(一)

datagrid|响应 1. Datagrid上的键盘响应 当Datagrid与数据源绑定后,会呈现出如图1所示的形式.当Datagrid被聚焦后,焦点会首先落在第一行第一列的单元格上(注意:不是单元格内),如图1-(3)所示.在该单元格上单击一下鼠标,会出现如图1-(4)所示的情况,焦点落入了单元格中.图1 Datagrid聚焦图 我们在本节中讨论的是图1-(1)及1-(2)所示的情况,即焦点是落在Datagrid的框格上.一般的键盘事件响应是用KeyPress.KeyDown或KeyUp事件

Henry手记 - Datagrid键盘事件响应(二)

datagrid|响应 对于Datagrid的键盘事件响应,我们一定要分辨清楚是Datagrid自身的,还是cell单元格的键盘事件响应,处理方法是有很大区别的.大家可以参考第一篇的方法,对cell中的键盘事件进行处理. 但有个问题上一节没有交待,就是如何对Enter键.方向键.Tab键.Pgup/PgDn这些虚键进行拦截与处理?一般网友遇到这个问题,十有八九是出于这个目的:就是希望按Enter键时使光标在一行中向右一个格一个格跳(从"name"到"123"),而不

启动关联的应用程序打开特殊文件 zlyperson(原作)-Windows开发-.NET教程-

启动关联的应用程序打开特殊文件    zlyperson(原作)        原文是C#,我把它改成了VB.但未来得及测试.若发现什么问题请告之.    这篇短文将演示如何启动与特殊文件关联的应用程序来打开特殊文件,而不必知道关联的应用程序的具体位置和名称.比如,你要打开demo.bmp,通常在Windows下是MSPaint.exe与之关联的.VB.Net启动关联的应用程序打开特殊文件,需要用到.NetFrameWork System.Diagnostics命名空间. 下面,我们将构造一个任

在.NET运行时了解类型信息(3) Paul_Ni(原作)-Windows开发-.NET教程-

访问自定义属性当属性与程序元素相关联后,可以使用反射来查询它们是否存在以及它们的值.用于查询属性的主要反射方法包含在 System.Reflection.MemberInfo.GetCustomAttributes 和 System.Reflection.Assembly.GetCustomAttributes 中.自定义属性的可访问性根据附加该属性的程序集来进行检查.这相当于检查附加自定义属性的程序集中的类型上的方法是否可以调用自定义属性的构造函数.诸如 System.Reflection.A

字段-winform DataGrid 数据显示

问题描述 winform DataGrid 数据显示 如果通知数 字段为20 点击拆分按钮 就会在DataGrid中显示20行数据,每行的通知数 字段 为1 这个功能怎么实现 解决方案 向DataGrid插入20行数据,每行的通知数为1不就行了,你需求的本义没有描述清楚

winform从Access读取数据,Windows窗体显示数据为什么有<div>标签?如何去掉?

问题描述 winform从Access读取数据,Windows窗体显示数据为什么有<div>标签?如何去掉? 解决方案 div是网页数据,看来是你数据库存入的时候是网页数据,所以你读取出来后,可能要自己截去 解决方案二: 一,查看Access数据存储是否含有div标签 二,winform页面中是否误写了div

Windows开发:Windows功能区

WINDOWS 功能区概述 本教程是针对开发桌面应用程序并希望利用 Windows Ribbon 框架的 C++程序员的.实验步骤将帮助您实现为小应用程序添加 一个空功能区,在功能区中添加多个包含图标.标签和其他资源的控件,然后将 控件与应用程序中已经存在的命令结构相连接.您将会学习API是如何维护控件组 织(control organization)和事件处理的分离.最后,本教程将会说明如何定 制一个界面和调整大小的行为来展示功能区是如何在不同大小的情况下进行适应 并运行的.当您完成实验的时候

整理Windows Phone 7教程(很全面)

转自 http://www.cnblogs.com/mr-raptor/archive/2012/02/01/2347648.html 前言 离Windows Phone 7正式发布已过去几个月了,但国内关于Windows Phone 7的中文书籍资料太少了,大多数是英文资料,一本真正的中文开发教程书都没有, 要啃英文资料对大部分的开发者来说太难了,而且很多的中文的文章教程又太杂乱. 机微网把网站多个月来转载的Windows Phone 7相关的教程文章分类整理了一下,供广大的开发者参阅.希望各