DataGrid.我晕了!

dalianu 2005-08-02 01:00:36
请问如何点击DataGrid的单元格时,使该行的颜色改变?
小弟写了一段代码,由于在CSDN上提问总提示:“请不要发表可能给我们带来伤害的言论,谢谢配合” 无奈只能将内容填在blog中:http://liuqq.blogdriver.com/liuqq/861055.html


按照我的想法,每列颜色改变需要动过"AddHandler DataGridTextBoxColumn1.TextBox.TextChanged,New EventHandler(AddressOf DealWithTextEnter)"事件去触发,但是之前的那句“DataGridTextBoxColumn1.TextBox.BackColor = Color.Cyan”却可以实现点击DataGrid中单元格,其颜色改变了。小弟很费解其中的原因,跟踪程序发现,“DataGridTextBoxColumn1.TextBox.BackColor = Color.Cyan”并没有在点击单元格时被触发,而是在Load时已经执行完毕的,各位高手指点一下这是为什么?

另外,单击单元格总是先第一行颜色改变,再去执行所点行的颜色,也就是说,点击其他行,第一行颜色总是先闪一下青色再使所点击行的颜色改变为青色。怎样解决?
...全文
463 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzmdegm 2005-08-03
  • 打赏
  • 举报
回复
如果是WINFORM的话:
http://community.csdn.net/Expert/topic/4068/4068614.xml?temp=.2874109

ccghghgj 2005-08-03
  • 打赏
  • 举报
回复
要重写DataGridTextColumn列控件才可以做到的.我有代码.你发邮件给我吧.
drk928@163.com

================================================================
巅峰之道,高瞻才能远瞩;
实力之道,厚积而薄发;

东莞打工者创业论坛:
http://211.148.133.100/work/
================================================================
dalianu 2005-08-03
  • 打赏
  • 举报
回复
我试过把以下代码在load中调用,可以实现点击DataGrid某行颜色改变。但是让我费解的是本希望通过 AddHandler DataGridTextBoxColumn1.TextBox.Enter, New EventHandler(AddressOf DealWithTextEnter)事件去实现,但是之前的 DataGridTextBoxColumn1.TextBox.BackColor = Color.Cyan已经可以实现了,那位能告诉我是怎么回事?
(AddColumn是写DataGridTextBoxColumn属性的方法,MappingName影射到Table的CATEGORYNAME字段)


Private Sub CreatColumnsEvent()

Dim ts As New DataGridTableStyle
Dim DataGridTextBoxColumn1 As New DataGridTextBoxColumn

Try

With ts
With .GridColumnStyles
.Add(DataGridTextBoxColumn1)
AddColumn(DataGridTextBoxColumn1, "CATEGORYNAME", "", 250, True)

DataGridTextBoxColumn1.TextBox.Enabled = True
DataGridTextBoxColumn1.TextBox.BackColor = Color.Cyan
AddHandler DataGridTextBoxColumn1.TextBox.Enter, New EventHandler(AddressOf DealWithTextEnter)
End With
End With
ts.RowHeadersVisible = False
ts.ColumnHeadersVisible = False
Me.grdPartCategory.TableStyles.Add(ts)
Catch ex As Exception
ProjectException.ShowErrMsg("", "CreatColumnsEvent", ex.Message)
End Try
rainmanguo 2005-08-03
  • 打赏
  • 举报
回复
更正:不应在DataGrid1_Click事件中。应该写个过程IniForm,将Me.DataGrid1.SelectionBackColor =color.red加入进去,然后将IniForm放到
#Region " Windows 窗体设计器生成的代码 "

Public Sub New()
MyBase.New()

'该调用是 Windows 窗体设计器所必需的。
InitializeComponent()

'在 InitializeComponent() 调用之后添加任何初始化
IniForm()

End Sub
rainmanguo 2005-08-03
  • 打赏
  • 举报
回复
在DataGrid1_Click事件中,加入:
Me.DataGrid1.SelectionBackColor = Me.DataGrid1.SelectionBackColor.Red
转瞬之间1 2005-08-03
  • 打赏
  • 举报
回复
写个样式表就ok了
sx_lxh 2005-08-02
  • 打赏
  • 举报
回复
http://www.microsoft.com/china/community/Column/14.mspx
http://www.microsoft.com/china/community/Column/15.mspx
egonzou 2005-08-02
  • 打赏
  • 举报
回复
在ItemDataBound事件里试试吧
e.Item.Attributes.Add("onclick", "this.style.backgroundColor='#FFCC66'");
StarsRiver 2005-08-02
  • 打赏
  • 举报
回复
up
dalianu 2005-08-02
  • 打赏
  • 举报
回复
DataGrid没有CellEnter事件,能不能说的具体些?
dalianu 2005-08-02
  • 打赏
  • 举报
回复
今天真的晕了,代码放在http://liuqq.blogdriver.com/liuqq/862262.html中....
  • 打赏
  • 举报
回复
CellEnter事件
dalianu 2005-08-02
  • 打赏
  • 举报
回复
难道问题太简单还是嫌分少,没人给予答案?
dalianu 2005-08-02
  • 打赏
  • 举报
回复
自己顶一下.

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧