找回密码
 立即注册

QQ登录

只需一步,快速开始

chenf1980

论坛元老

41

主题

147

帖子

9349

积分

论坛元老

积分
9349

活字格认证

chenf1980
论坛元老   /  发表于:2011-5-6 16:15  /   查看:9887  /  回复:11
在父MultiRow里面写了一个共通事件,
Protected Overrides Sub OnEditingControlShowing(ByVal e As GrapeCity.Win.MultiRow.EditingControlShowingEventArgs)
        MyBase.OnEditingControlShowing(e)
        e.CellStyle.BackColor = Color.White
        e.CellStyle.ForeColor = Color.Black
    End Sub

在Form里面添加这个MultiRow(TestMultirow1)后,因为这个Form比较特殊,所以颜色不希望是设置过的颜色。于是写了
Private Sub TestMultirow1_EditingControlShowing(ByVal sender As System.Object, ByVal e As GrapeCity.Win.MultiRow.EditingControlShowingEventArgs) Handles TestMultirow1.EditingControlShowing
        e.CellStyle.BackColor = Color.FromArgb(128, 128, 128)
        e.CellStyle.ForeColor = Color.White
    End Sub
结果发现,写的方法没有覆盖父MultiRow的这个事件,还是又走了一遍。

11 个回复

倒序浏览
Arthas
葡萄城公司职员   /  发表于:2011-5-6 16:56:00
沙发
我不确定e里面是不是有个Cancel或者Handle的属性。
如果有, 你可以试试用它来解决。
扯淡第一高手
回复 使用道具 举报
chenf1980
论坛元老   /  发表于:2011-5-6 17:09:00
板凳
没有的
回复 使用道具 举报
neil
论坛元老   /  发表于:2011-5-6 17:26:00
地板

回复 1# chenf1980 的帖子

原因是因为EditingControlShowing事件是在 MyBase.OnEditingControlShowing(e)这个方法中发出的。所以你在EditingControlShowing事件中改成灰色和白色之后, 在 OnEditingControlShowing方法中又被改成黑色和白色了。 所以没有效果。


解决方法是,给你自定义的MultiRow 添加一个事件,名字叫做: AfterEditingControlShowing, 这个事件在OnEditingControlShowing方法的最后一句发出。  然后在form中,处理AfterEditingControlShowing事件,在这个事件中把颜色改成灰色和白色。

相关代码如下:

第一步,给Multirow添加AfterEditingControlShowing事件,并发出这个事件:

  1.     Protected Overrides Sub OnEditingControlShowing(ByVal e As EditingControlShowingEventArgs)
  2.         MyBase.OnEditingControlShowing(e)
  3.         e.CellStyle.BackColor = Color.White
  4.         e.CellStyle.ForeColor = Color.Black
  5.         Me.OnAfterEditingControlShowing(e)
  6.     End Sub


  7. Protected Sub OnAfterEditingControlShowing(e As EditingControlShowingEventArgs)
  8.         RaiseEvent AfterEditingControlShowing(Me, e)
  9. End Sub

  10. Public Event AfterEditingControlShowing As EventHandler(Of EditingControlShowingEventArgs)
复制代码
第二步,在form中处理AfterEditingControlShowing事件,并在事件中设成你想要的颜色。

  1. Private Sub myMR1_AfterEditingControlShowing(ByVal sender As Object, ByVal e As EditingControlShowingEventArgs)
  2.     e.CellStyle.BackColor = Color.FromArgb(&H80, &H80, &H80)
  3.     e.CellStyle.ForeColor = Color.White
  4. End Sub

复制代码
回复 使用道具 举报
chenf1980
论坛元老   /  发表于:2011-5-6 17:40:00
5#
Me.AfterEditingControlShowing 没有这个属性哦
回复 使用道具 举报
neil
论坛元老   /  发表于:2011-5-6 17:42:00
6#

回复 5# chenf1980 的帖子

恩  现在加上了
:Z 刚才忘贴上来了。
回复 使用道具 举报
chenf1980
论坛元老   /  发表于:2011-5-6 17:54:00
7#
不对把?定义了Event,只能用raiseevent来执行,现在就直接出ERROR了
回复 使用道具 举报
neil
论坛元老   /  发表于:2011-5-6 17:57:00
8#

回复 7# chenf1980 的帖子

再试试
回复 使用道具 举报
chenf1980
论坛元老   /  发表于:2011-5-6 18:06:00
9#
呵呵,不行的啊
回复 使用道具 举报
neil
论坛元老   /  发表于:2011-5-6 23:38:00
10#

回复 9# chenf1980 的帖子

已经改成raiseevent啊,为什么还不行?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部