惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
V
Visual Studio Blog
有赞技术团队
有赞技术团队
T
Tailwind CSS Blog
B
Blog
I
InfoQ
博客园 - 三生石上(FineUI控件)
阮一峰的网络日志
阮一峰的网络日志
F
Fortinet All Blogs
H
Help Net Security
博客园 - Franky
宝玉的分享
宝玉的分享
博客园 - 司徒正美
C
Check Point Blog
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Jina AI
Jina AI
T
The Blog of Author Tim Ferriss
MongoDB | Blog
MongoDB | Blog
云风的 BLOG
云风的 BLOG
A
About on SuperTechFans
罗磊的独立博客
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家

博客园 - LeeWenjie

【转发】NPAPI学习(Firefox和Chrome扩展开发 ) 【转发】NPAPI开发详解,Windows版 【转发】网易邮箱前端技术分享之javascript编码规范 【转发】揭秘Facebook 的系统架构 【转发】淘宝网架构分享总结 【转发】淘宝网采用什么技术架构来实现网站高负载的 【转发】浅析淘宝网首页信息架构的变迁 【转发】Html5 File Upload with Progress 【转载】使用JavaScript实现Motion Detection 【转发】WEB前端开发规范文档 【转发】响应式Web设计?怎样进行? 【转发】开源中最好的Web开发的资源 【原创】PDA DataGrid的滚动条事件处理 【转发】SharePoint 2010——ListData.svc故障排除 【转发】谈论 SharePoint 2010中的沙盒解决方案(Sandboxed Solution) 【原创】NET4.0在SharePoint 2010 IIS下出现导演 C#实现多语言 【转载】互联网产品开发中的“快”字诀 【转载】SHAREPOINT TimeJob定时器开发
【原创】PDA 实现DataGrid可编辑
LeeWenjie · 2012-06-13 · via 博客园 - LeeWenjie

PDA 实现DataGrid可编辑

通过继承 DataGrid 扩展实现

对ISupportInitialize 空实现,如没有,会出现异常。

在PDA设备上不能直接对DataGrid的单元格进行编辑,那么,如何实现单元格可编辑呢?我们可以用TextBox来模拟单元格,让这个TextBox一开始隐藏起来,当点击DataGrid的单元格的时候,在当前单元格的位置显示TextBox.因此我们必须要先获得当前单元格的坐标,然后显示TextBox在该坐标,并且将当前单元格的内容赋给TextBox,当用户修改了TextBox的内容并且离开该单元格时,TextBox将再次被隐藏,同时,单元格的内容被赋为TextBox的最新内容。按照以上的思路我们可以写如下代码:

 1 using System;
 2 using System.Drawing;
 3 using System.Windows.Forms;
 4 using System.ComponentModel;
 5 
 6 namespace SmartDeviceProject1
 7 {
 8     public class datagridEx :DataGrid,ISupportInitialize
 9     {
10         DataGridCell editcell = new DataGridCell();
11         Rectangle cellpos = new Rectangle();
12         TextBox txtedit = new TextBox();
13         bool isUpdateMode = false;
14         bool isEditMode = false;
15 
16         public datagridEx()
17         {
18             this.Controls.Add(txtedit);
19             txtedit.Visible = false;
20             txtedit.BringToFront();
21             txtedit.Text = "grn";
22         }
23         protected override void OnCurrentCellChanged(EventArgs e)
24         {
25             if (isUpdateMode)
26             {
27                 base.OnCurrentCellChanged(e);
28                 return;
29             }
30             DataGridCell currentcell = this.CurrentCell;
31             if (isEditMode && !this.CurrentCell.Equals(editcell))
32             {
33                 isUpdateMode = true;
34                 this[editcell.RowNumber, editcell.ColumnNumber] = txtedit.Text;
35                 this.CurrentCell = currentcell;
36                 this.Visible = true;
37                 txtedit.Visible = false;
38                 isUpdateMode = false;
39                 isEditMode = false;
40             }
41             editcell = this.CurrentCell;
42             cellpos = this.GetCellBounds(editcell.RowNumber, editcell.ColumnNumber);
43             txtedit.Left = cellpos.Left  - 1;
44             txtedit.Top = cellpos.Top  - 1;
45             txtedit.Width = cellpos.Width + 2;
46             txtedit.Height = cellpos.Height + 2;
47 
48             txtedit.Visible = true;            
49             txtedit.Text = this[editcell.RowNumber, editcell.ColumnNumber].ToString();
50 
51             txtedit.BringToFront();
52             txtedit.Focus();
53             txtedit.SelectAll();
54             isEditMode = true;
55 
56             base.OnCurrentCellChanged(e);
57         }
58 
59         #region ISupportInitialize接口实现
60         public void BeginInit()
61         {            
62         }
63         public void EndInit()
64         {
65         }
66         #endregion
67 
68     }   
69 }

当然,还可以增加回车跳转到下一单元格。