DataGridView锁定在继承的UserControl上

ben*_*rce 11 .net c# inheritance winforms

我有一个带有一些预定义控件的UserControl(groupbox,button,datagridview),这些控件被标记为protected,组件变量也被标记为protected.

然后我想从这个基本UserControl继承到另一个UserControl,但是DataGridView总是被锁定在设计器中.

我怀疑它可能与实现ISupportInitilize的DataGridView有关.

public class BaseGridDetail : UserControl
Run Code Online (Sandbox Code Playgroud)

是否定义了DataGridView控件(等).


public class InheritedDetail : BaseGridDetail
Run Code Online (Sandbox Code Playgroud)

DataGridView控件已锁定


有没有人有任何想法如何在继承人之后在设计师中提供这种控制?

Rob*_*obS 12

从它的外观来看,DataListView(和一些其他控件)不支持可视继承.这里记录了一个连接问题,看起来并不乐观.

使用其他表单控件记录了类似的问题,例如flowlayoutpanel.

我无法找到强制视觉继承的方法.

以下是关于连接的官方答案:"对于这个特定的版本,DataGridView并非设计用于视觉传播.我们将在计划未来发布时牢记您的建议"那是2006年5月26日.

更新:发现此博客文章可能有答案

编辑:我无法验证博客帖子的声明.看起来可能是这个问题的最新消息

看起来您仍然可以在运行时操作DataListView,因此您可以设置可视属性(和其他设置).这不是一个很好的妥协.


Rob*_*ide 8

[1]创建自定义用户控件

[2]使您的自定义userControl使用下面的Inherited DataGridView:

[Designer(typeof System.Windows.Forms.Design.ControlDesigner))]
public class InheritedDataGridView : DataGridView { }
Run Code Online (Sandbox Code Playgroud)

[3]继承自己的自定义用户控件,并且中提琴!!

[4]哦,别忘了添加"System.Design"dll

请享用.