关于c#(vs)dategridview控件继承不能修改的问题

问题描述:前几天写个小项目的时候,用到了一个父窗体,然后继承过来的dategridview控件不管是属性还是事件都不能修改。

如下图所示:

 

 

 

 

然后我就在网上找资料,但是有关这个问题的资源甚少,或许是我不会找,总之,我根据资料得出了三点东西:

①有关这个问题的论坛或者帖子大部分都是在十年之前的了,而且并没有找出有效解决方法

②在这方面,简单控件继承后是可以修改的,只要改成public,但复杂一点的控件,比如本文所说的dategridview,权限改成什么都不行,他们说这是微软故意设置的,也有的说这是微软的一个bug

③然后有的说虽然控制面板是灰色的不能修改,但可以在后台用代码修改,这点不完全正确,不仅仅是用代码,还得用到一个东西

 

总之,根据不断的捣腾和讨论,后面我们终于搞出来了,解决方法如下:

比如我想给控件注册一个双击单元格的事件,我们先在父窗体的dategridview(将权限改为public)里直接去面板那里点击事件,然后就会进到后台代码:

如上图而言,将原本的private改为public,然后多加一个virtual,没错,就是采用虚方法重写的方式来达到在子类使用事件。

然后在子窗体里,面板依然是灰色的,不能用点击的方式,我们可以直接在窗体的后台代码里直接写

 

直接复制父窗体的空事件代码,然后把virtual改成override,然后在代码体里面写东西就行了。

经验证,该方法是可行的

 

posted @ 2018-03-29 20:37  超级VIP  阅读(1298)  评论(3编辑  收藏  举报