梦在脚下,让心灵去飞翔。

专注.net,SQL Server,设计模式。

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  15 随笔 :: 1 文章 :: 1066 评论 :: 28 引用

版权声明:如有转载,下载源码者如转到第三方网站必须注明博客园随风飘散否则作者有追究法律责任的权利。
VS2005已经发布好久了,但对DataGridView 的使用,在网上的资料还比较少,DataGridView 无论是美观与功能方面都是DataGrid所不能比的,应该说DataGridView 不是DataGrid的升级,因为DataGridView 使用了一套全新的构建方式,引入了DataGridViewCell ,DataGridViewColumn,DataGridViewRow,等,新的概念,也使编程更容易了,它提供了
DataGridViewTextBoxColumn,DataGridViewImageColumn,DataGridLinkColumn,DataGridViewComboBoxColumn,DataGrid
ViewButtonColumn,DataGridViewCheckBoxColumn,等样式列
但我们常用的远不只这些样式列,所以我不想把所有的样式列都给大家做出来,我只是想抛砖引玉通过我自己做的四个样式列来让大家掌握自定义DataGridView样式列的方法.由于时间仓促功能不是很完善,望大家见谅,好了大家先看看4个控件的效果.

一:DataGridViewMaskedTextBoxColumn(正则表达式样式列)


(二)DataGridViewFormat(可以获取格式的列,如N2 ,1234,11)
(三)DataGridViewTreeViewColumn(下拉列表树控件)

(四)DataGridViewDateTimeColumn(日期选择列控件)

控件源码下载
/Files/CodeAnyWhere/WindowsApplication23.rar

posted on 2005-12-17 01:37 随风飘散 阅读(25304) 评论(76) 编辑 收藏

评论

能否做个像powerbuild一样的,弹出另外一个datagridview,点某一行后,右边的cell中出现Datagridview中的一个column。
 回复 引用   

#2楼 2005-12-17 11:14 zz堪[未注册用户]
private void comboBoxTreeView1_TextChanged(object sender, EventArgs e)
{
MessageBox.Show("sdf");
}
没有执行,为什么呢??是BUG吗?
 回复 引用   

多次进入下拉列中后,TreeNode会多次增加,应该是个Bug!
 回复 引用   

#4楼[楼主] 2005-12-17 13:01 随风飘散      
To:jeffersyuan
我只是做个演示的例子,跟控件无关,因为在测试窗体里的事件中添加的节点,所以你每次点多次进入下拉列中后,TreeNode会多次增加,这不是BUG,你可以根据你的需要自己添加.
 回复 引用 查看   

都2005了 唉
怎么又落伍了
不过我好像都没有跟上过队伍
 回复 引用   

#6楼 2005-12-27 21:15 hunews[未注册用户]
有没有vb.net版的呀!
 回复 引用   

刚下了个试试,感觉不太习惯,呵呵,要慢慢来
 回复 引用   

#8楼 2006-01-12 21:27 wallace[未注册用户]
不错,来一份,bearhb@163.com
 回复 引用   

#9楼 2006-01-14 11:08 迷倒一片      
DataGridView 能不能实现类似WebForm中的DataGrid checkbox模板列 能够显示复选框和文本样式

54218809@163.com
 回复 引用 查看   

本人市菜鸟,请问如何动态修改datagridview中cell的样式表
 回复 引用   

#11楼 2006-03-08 10:16 lbq[未注册用户]
请给份源码,非常感谢!!!
Klineliu@hotmail.com
 回复 引用   

#12楼 2006-03-08 16:18 bubugao[未注册用户]
强,能否给一份:
mov168@163.com 谢谢!
 回复 引用   

#13楼 2006-03-26 18:43 000111[未注册用户]
能否给我一份。谢谢win@axue88.com
 回复 引用   

#14楼 2006-05-29 15:58 周奔驰      
楼主能否改进一下下拉树列,使得能够像DGVcomboboxcolumn那样显示选择的参考内容,同时支持你现在的功能,比如一个职员信息的DGV,其中一列是选择职员所在的组织,组织信息是树形层次数据,那样的话会更有普遍的使用意义
 回复 引用 查看   

老兄能不能把你博客上所有的代码,发给我,在此先谢了
要是你把所有的代码全部共享出来,算是为中国程序做了一件好事
flyingdream8@163.com
能不能交个朋友QQ:546878077

还提醒你一下你那篇,财务表格的文章,下面别人无法流言,被上面的图片档住了
 回复 引用   

#16楼[楼主] 2006-06-21 22:05 随风飘散      
源码,不就在上面,可以下载的,
 回复 引用 查看   

#17楼 2006-07-26 16:46 LG[未注册用户]
我的EditingControl中要用到DataSource,如何从自定义列中传过来.谢谢
 回复 引用   

谢谢--高人谢谢--高人谢谢--高人谢谢--高人谢谢--高人谢谢--高人谢谢--高人谢谢--高人谢谢--高人谢谢--高人
 回复 引用   

看了你的代码,摸索很长时间,还是摸索不出其中的奥秘,你的代码注释太少了!!,让我们这些想学习深层次编程的业余爱好者只能望而却步,本人非常想学这方面的知识,不知能否与你联系,希望在这方面一有困难能向你请教.我的邮箱是:
dejiangxian@Hotmail.com
 回复 引用   

请给份源码,非常感谢!!!
h_liuqian@126.com
 回复 引用   

支持。
 回复 引用   

#22楼 2007-01-22 19:33 丁丁[未注册用户]
恳求代码 dmj719@163.com 谢谢
 回复 引用   

#23楼 2007-01-25 15:45 c.life      
mark
 回复 引用 查看   

楼主你怎么看不大懂呀!!!有没有什么参考资料呀
 回复 引用   

#25楼 2007-03-02 17:26 wangwan[未注册用户]
你这些控件怎么不写个使用说明和示例啊,搞得我用都不能用
 回复 引用   

#26楼 2007-03-07 15:24 wangwan[未注册用户]
你这些控件怎么不写个使用说明和示例啊,搞得我用都不能用 回复 更多评论
 回复 引用   

你好,我想问个问题,如何在DataGridViewComboBoxColumn不处理UP和DOWN键,也就是说如何在DataGridViewComboBoxColumn选择后,按UP或DOWN键相应地移到currentcell的上一个cell或下一个cell,而不是在currentcell的下拉框中移动?我知道有个EditingControlWantsInputKey()方法来实现,可不知道该怎么重写该方法

麻烦帮忙
 回复 引用   

#28楼 2007-03-26 23:52 pass[未注册用户]
现在用Winform 的DataGridView实现Checkbox列的全选功能,找不到资料,2005的更少了,楼主能否帮忙一下。
多谢!!
 回复 引用   

#29楼 2007-03-26 23:55 pass[未注册用户]
<font color=red><b>现在用Winform 的DataGridView实现Checkbox列的全选功能,找不到资料,2005的更少了,楼主能否帮忙一下。
多谢!!</b></font>
 回复 引用   

#30楼 2007-04-02 10:14 cd[未注册用户]
如何得到c#中DataGridView某一行的信息
 回复 引用   

#31楼 2007-04-08 19:04 soft_ware      
能给我一份吗
ljm80586@sina.com
谢谢
 回复 引用 查看   

#32楼 2007-04-15 16:48 zzero[未注册用户]
相当的不错了,请问一下高手,在datagridview中实现撤消操作?如能如何做,zero2500@163.com
谢谢!
 回复 引用   

#33楼 2007-05-31 11:22 you[未注册用户]
不错哦,可以给我一份吗?
cool_you503@163.com
 回复 引用   

我也要,哈哈
 回复 引用   

#35楼 2007-07-10 19:54 peter[未注册用户]
太感谢了 大哥
我对你的景仰如滔滔江水连绵不绝
 回复 引用   

谢谢
 回复 引用   

#37楼 2007-08-02 16:32 ade[未注册用户]
我还想了解关于datagridview中数据的刷新问题,不知道LZ有什么看法的,(就是数据绑定到了控件并显示了,点击一条记录或数据项转到别的窗体去进行对数据的修改等(添加信息也一样),等确定后DATAGRIDVIEW里的数据就自动刷新为最新的数据记录。这个什么实现?)知道的回复 selinet2652@163.com`.期待。
 回复 引用   

#38楼 2007-08-02 16:36 ade[未注册用户]
下载不了啊,`能不能也给我发一份。selinet2652@163.com
 回复 引用   

#39楼 2007-08-24 09:33 arobot[未注册用户]
一个非常好的demo, 非常感谢!我得好好研究一下。
 回复 引用   

#40楼 2007-09-10 21:32 林林[未注册用户]
谢谢斑竹给出了这么好的东西,可是我要说一点。那就是你的代码注释太少了。可以说基本没有。这样看的人就不容易看懂了。至少我一直看都不是那么容易懂的。
 回复 引用   

能给datagridview写一个属性,让它的DataGridViewTextBoxColumn大写吗?
 回复 引用   

这个可以下载吗?
 回复 引用   

#43楼 2007-09-13 14:10 雄洲[未注册用户]
非常感谢!
 回复 引用   

#44楼 2007-09-16 19:11 hoodlum1980      
@随风飘散
这说明你的cell级别或者column缓存了这个控件,所以每次才会重复增加,要么你不缓存,要么你每次下拉前判断一下,是否已经加载过。或者先清空。总之,我也觉得这肯定是bug。现实中不可能这样使用。
 回复 引用 查看   

我在使用这个的时候..发现一个dug
在 System.InvalidOperationException 中第一次偶然出现的“System.Data.dll”类型的异常
System.ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。
参数名: rowIndex
在 System.Windows.Forms.DataGridViewCell.GetValue(Int32 rowIndex)
在 System.Windows.Forms.DataGridViewCell.get_Value()
在 WindowsApplication23.DataGridViewDateTimeCell.InitializeEditingControl(Int32 rowIndex, Object initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle) 位置 F:\C#\DataGridViewColumns\DataGridViewColumns\DataGridViewDateTime\DataGridViewDateTimeCell.cs:行号 28
不知道这是什么意思希望指点一二
QQ251021591 E-mail ansili@qq.com
 回复 引用   

什么么叫牛,楼猪就是牛:)
 回复 引用   

谢谢楼主分享!!!
 回复 引用   

#48楼 2007-11-22 18:51 EagleFish      
首先感谢楼主分享。

请教楼主一个关于DataGridView的一个问题:
我希望在view中被选定的行(可能是由鼠标单击引起的,也可能是由键盘的上下键选中的)发生变化的时候出发一个事件,不知应该是什么事件?跟我的需求最近似的时间为RowEnter和RowStateChange,但这两个事件在DataGridView绑定数据源的时候都会被触发。比如对于RowEnter事件,msdn的注释为“此事件在 DataGridView 事件最初加载时以及用户选择当前行以外的行时发生”。我不希望在加载的时候出发,到底应该选择一个什么事件呢?
 回复 引用 查看   

#49楼 2007-12-28 17:05 高飛[未注册用户]
一直留言到2007年了啊 呵呵
請問樓主 我想要DataGridView的列中可以插入自定義的控件
你看過金蝶K3的那個單據表沒
就像那種功能的
 回复 引用   

#50楼 2007-12-28 17:06 高飛[未注册用户]
我QQ283185117
要是寫出來了記得通知我 呵呵謝謝
 回复 引用   

#51楼 2008-02-22 11:59 Eureka[未注册用户]
页面的验证码图片刷了三次才刷出来,不容易阿.
呵呵,感谢发布这么亚克西的东西,基本都弄明白了,能提个关及的问题吗?
DataGridView自带的列的每个单元格都格式化成固定类型,比如ComboBox列每一个新增的列都会有一个下拉的按钮显示,并且可以绑定数据源,整个表格加载数据的时候还可以同步显示数据和绑定数据,如果要实现,是不是在每个cell里面初始化ComboBox,每一个cell有一个ComboBox?
能指点个方向吗?
QQ:12807207
Email,MSN:shaobangjie@hotmail.com
谢谢.
 回复 引用   

#52楼 2008-02-22 20:04 sasa[未注册用户]
给我一份代码吧~!谢谢~!edison_33@163.com
 回复 引用   

尊敬的博主:
你好!看到你的源代码,受益匪浅!你所提高的单元格样式都很实用,
请原谅我愚味,我现在还不能看懂你的代码,如果我现在要做一下即可以输入,又可以从下拉我表中选择的单元格,应该如何做呢?
现有的样式中,DataGridViewComboBoxColumn 只能从下拉列表中选,但却不能更改单元格的值,我现在想做一个即可以选,亦可以更改的单元格,
应该如何做呢?期望指点迷津哦!
 回复 引用   

#54楼 2008-04-18 09:21 Lelliao[未注册用户]
你好..小弟也要做一个既能输入又能选择的DataGridViewComboBoxColumn ,不知65楼的仁兄有没弄出来.本人MSN:lellliao@hotmail.com,一起探讨探讨
--引用--------------------------------------------------
billschen: 尊敬的博主:
你好!看到你的源代码,受益匪浅!你所提高的单元格样式都很实用,
请原谅我愚味,我现在还不能看懂你的代码,如果我现在要做一下即可以输入,又可以从下拉我表中选择的单元格,应该如何做呢?
现有的样式中,DataGridViewComboBoxColumn 只能从下拉列表中选,但却不能更改单元格的值,我现在想做一个即可以选,亦可以更改的单元格,
应该如何做呢?期望指点迷津哦!

--------------------------------------------------------
 回复 引用   

#55楼 2008-04-18 09:48 Bruce Liu      
别用.net 自带的DataGridViewComboBoxColumn,直接自己从.net 自带的dropdownlist 重新封装一个。
 回复 引用 查看   

#56楼 2008-06-11 16:06 lg2008[未注册用户]
ComboBoxTreeView 非常好,谢谢楼主提供的代码,只是现在希望ComboBoxTreeView 只能选择不能输入,在ComboBoxTreeView.cs,DataGridViewTreeViewEditingControl.cs里把dropdownstyle 设置成 dropdownlist了,还是可以直接输入,能有什么办法吗?非常感谢!
 回复 引用   

#57楼 2008-06-11 16:08 lg2008[未注册用户]
希望ComboBoxTreeView 只能选择不能输入,在哪里修改呢,能否指点一下,万分感谢!
 回复 引用   

请问 如何把这几个样式应用到自己的工程中,谢谢。
 回复 引用   

#59楼 2008-07-31 10:59 leng[未注册用户]
不错!!!!!谢谢分享!!!收益了!!
 回复 引用   

#60楼 2008-08-06 12:19 style[未注册用户]
我双击datagridview里面某一行的某一列,可以链接到另外一个页面看到相关的详细信息
双击事件怎么写啊
谢谢啊
 回复 引用   

#61楼 2009-03-05 11:20 AndyLau[未注册用户]
非常感謝樓主的代碼,對于我這種新手來講,比獲至寶。鞠躬
 回复 引用   

#62楼 2009-08-31 10:25 sad7[未注册用户]
给我一份代码吧~!谢谢~!wisdom_qr@sina.com
 回复 引用