.net 允许IExtenderProvider控件附加到UserControl上的控件

.net 允许IExtenderProvider控件附加到UserControl上的控件,.net,vb.net,winforms,.net,Vb.net,Winforms,VB.NET2.0框架 我开发了一个实现IExtenderProvider的控件,以便附加到控件并显示用于翻译该控件文本的表单。这对表单上的常规控件非常有效,但默认情况下IExtenderProvider不会附加到UserControls上的控件 是否可以修改UserControl或我的IExtenderProvider控件以使其能够附加到UserControl上的控件 谢谢 如果您拥有IExtenderProvider或UserControl的源代码,只需将实现更改为1)让扩展器“挖掘”Use

VB.NET2.0框架

我开发了一个实现IExtenderProvider的控件,以便附加到控件并显示用于翻译该控件文本的表单。这对表单上的常规控件非常有效,但默认情况下IExtenderProvider不会附加到UserControls上的控件

是否可以修改UserControl或我的IExtenderProvider控件以使其能够附加到UserControl上的控件


谢谢

如果您拥有IExtenderProvider或UserControl的源代码,只需将实现更改为1)让扩展器“挖掘”UserControl.Controls属性,或2)让UserControl expose属性包装要扩展的控件属性。[如果扩展程序扩展了TextBox控件,则无论显示什么属性,都无法使UserControl看起来像TextBox。]

您需要将问题更改为“UserControl中的控件”或“组成UserControl的控件”我希望不必像您在第一个建议中所建议的那样,让它自动遍历UserControl控件列表并附加到适当的控件,就像它如何处理面板或Groupbox一样(这样我就可以在设计器中切换设置),但这似乎不可能。我通过遍历列表并强制它附加一些默认设置来实现它。“它如何处理面板或Groupbox”这些只是容器控件。放在它们上面的任何控件仍然保持它们的身份。UserControl不是容器控件。UserControl中使用的控件成为UserControl。最好公开通过UserControl扩展的属性。扩展器不负责确定要扩展的控件。由用户控件决定/公开它将公开哪些属性。诚然,UserControl不是容器控件,但如果将设计器设置为容器,它可以包含其他控件。我无法通过UserControl“公开”扩展器的属性。我在UserControl上为扩展的控件添加了属性,但它们在属性窗口中不接收extender属性。我必须收回我的语句。我在考虑你的问题,所以我“挖掘”了对象浏览器。UserControl继承自ContainerControl,后者继承自ScrollableControl,后者继承自控件。似乎您所能做的就是创建一个IExtenderProvider,它“挖掘”UserControl控件属性。