当前位置: 首页 > 编程语言 > C#

DataGridViewlockedoninheritedUserControl分享

时间:2023-04-10 10:47:10 C#

DataGridViewlockedoninheritedUserControl我有一个带有一些预定义控件(groupbox,button,datagridview)的UserControl,这些控件被标记为受保护,组件变量也被标记为受保护。然后我想从这个基本的UserControl继承到另一个UserControl,但是DataGridView总是锁定在设计器中。我怀疑它可能与实现ISupportInitilize的DataGridView有关。publicclassBaseGridDetail:UserControl定义DataGridView控件(等)。publicclassInheritedDetail:BaseGridDetailDataGridView控件被锁定有谁知道继承后如何在设计器中提供此控件?从外观上看,DataListView(和其他一些控件)不支持视觉继承。这里记录了一个看起来不太乐观的连接问题。其他表单控件(例如flowlayoutpanel)也记录了类似的问题。我找不到强制视觉继承的方法。这是链接上的官方答案:“对于这个特定的版本,DataGridView不是为视觉通信而设计的。我们会在计划未来的版本时记住你的建议”那是2006年5月26日。更新:发现这篇博客文章可能有答案编辑:我无法验证博客文章的声明。看起来它可能是这个问题的更新看起来你仍然可以在运行时操作DataListView,所以你可以设置视觉属性(和其他设置)。这不是一个好的妥协。[1]创建自定义用户控件[2]让您的自定义用户控件使用以下InheritedDataGridView:[Designer(typeofSystem.Windows.Forms.Design.ControlDesigner))]publicclassInheritedDataGridView:DataGridView{}[3]inheritanceYourown自定义用户控件,和中提琴!![4]哦,别忘了添加“System.Design”dllEnjoy。将数据网格添加到面板控件中,并将面板和数据网格的修饰符设置为受保护。这将为您提供所有继承的表单设计时访问网格属性的权限。我留下了答案,但重新阅读了您的问题并决定将其删除。您要在继承的控件中修改的DataGridView是什么?这是专栏?我已经能够通过在我的基本UserControl中设置一个受保护的方法并将其传递给网格的列集合来做到这一点,如下所示://inbaseUserControlpublicBaseGridDetail(){InitializeComponent();InitGridColumns(dataGridView1.Columns);}protectedvirtualvoidInitGridColumns(DataGridViewColumnCollectioncolumns){columns.Clear();现在您的派生控件可以像这样简单地覆盖此方法://添加我自己的自定义列}将属性从[private]更改为[protected],如xx.designer.cs中所定义,这是原始机器生成的代码。例如privateSystem.Windows.Forms.ButtonbtnSave;保护System.Windows.Forms.ButtonbtnSave;并重建它。然后您可以更改继承控件的属性。以上是C#学习教程:DataGridView锁定继承的UserControl上的所有共享内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: