找回密码
 立即注册

QQ登录

只需一步,快速开始

chenke79

高级会员

23

主题

98

帖子

1687

积分

高级会员

积分
1687

活字格认证

chenke79
高级会员   /  发表于:2011-7-18 17:01  /   查看:24168  /  回复:42
1金币
当选中Multirow单元格时,此时只显示该单元格的背景色为蓝色,按Ctrl+C时,只复制该单元格内容。
我现在想要实现的是,该该单元格同行的颜色都变为蓝色,但是复制时还是只复制该单元格,请各位高手大侠多多帮忙,这该怎么实现呢?

42 个回复

倒序浏览
robert
金牌服务用户   /  发表于:2011-7-18 17:16:00
沙发
请尝试以下代码:
C#:
  1.         private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             this.gcMultiRow.CellFormatting += new EventHandler<CellFormattingEventArgs>(gcMultiRow_CellFormatting);
  4.             this.gcMultiRow.RowEnter += new EventHandler<CellEventArgs>(gcMultiRow_RowEnterLeave);
  5.             this.gcMultiRow.RowLeave += new EventHandler<CellEventArgs>(gcMultiRow_RowEnterLeave);
  6.         }
  7.         void gcMultiRow_RowEnterLeave(object sender, CellEventArgs e)
  8.         {
  9.             this.gcMultiRow.InvalidateRow(e.RowIndex);
  10.         }
  11.         void gcMultiRow_CellFormatting(object sender, CellFormattingEventArgs e)
  12.         {
  13.             if (e.Scope == CellScope.Row &amp;&amp;
  14.                 e.RowIndex == this.gcMultiRow.CurrentCellPosition.RowIndex)
  15.             {
  16.                 e.CellStyle.BackColor = SystemColors.Highlight;
  17.             }
  18.         }
复制代码

VB:
  1.     Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
  2.         AddHandler Me.gcMultiRow.CellFormatting, AddressOf gcMultiRow_CellFormatting
  3.         AddHandler Me.gcMultiRow.RowEnter, AddressOf gcMultiRow_RowEnterLeave
  4.         AddHandler Me.gcMultiRow.RowLeave, AddressOf gcMultiRow_RowEnterLeave
  5.     End Sub
  6.     Private Sub gcMultiRow_RowEnterLeave(ByVal sender As Object, ByVal e As CellEventArgs)
  7.         Me.gcMultiRow.InvalidateRow(e.RowIndex)
  8.     End Sub
  9.     Private Sub gcMultiRow_CellFormatting(ByVal sender As Object, ByVal e As CellFormattingEventArgs)
  10.         If e.Scope = CellScope.Row AndAlso e.RowIndex = Me.gcMultiRow.CurrentCellPosition.RowIndex Then
  11.             e.CellStyle.BackColor = SystemColors.Highlight
  12.         End If
  13.     End Sub
复制代码
回复 使用道具 举报
Arthas
葡萄城公司职员   /  发表于:2011-7-18 17:26:00
板凳
重赏之下必有勇夫啊。。。。
扯淡第一高手
回复 使用道具 举报
robert
金牌服务用户   /  发表于:2011-7-18 17:36:00
地板
回复 使用道具 举报
chenke79
高级会员   /  发表于:2011-7-18 17:39:00
5#

回复 2# robert 的帖子

再请问选中状态的那个蓝色是多少,代码怎么表示?
回复 使用道具 举报
barrylei
中级会员   /  发表于:2011-7-18 17:48:00
6#

回复 5# chenke79 的帖子

你指的是SystemColors.Highlight吗?这个跟操作系统的theme有关,不同的系统不同的theme下可能是不一样的。
你需要这个颜色来做什么?我看看有没有别的方案。
回复 使用道具 举报
chenke79
高级会员   /  发表于:2011-7-18 17:52:00
7#

回复 6# barrylei 的帖子

我想把选中的Multirow单元格以外的单元格颜色设置成和选中时一样的颜色我用了代码
Dim intRow As Integer = Me.GcKinkoDetail.CurrentCellPosition.RowIndex
GcKinkoDetail.Rows(intRow).DefaultCellStyle.BackColor = Color.????
回复 使用道具 举报
barrylei
中级会员   /  发表于:2011-7-18 17:57:00
8#
用SystemColors.Highlight不行吗?
我们缺省的SelectionBackColor是SystemColors.Highlight, 所有在2楼Robert的代码里用了SystemColors.Highlight, 我运行了他的代码,颜色是一样的。你是跑Robert的代码没有达到你预期的效果吗?
回复 使用道具 举报
chenke79
高级会员   /  发表于:2011-7-18 18:01:00
9#
我刚刚没有用~~我想试试自己的那个可以改变颜色不~看来是不行~~
回复 使用道具 举报
barrylei
中级会员   /  发表于:2011-7-18 18:02:00
10#
哦,现在好了吗?:-)
回复 使用道具 举报
12345下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部