2013-04-28 47 views
0

我正在自定义一个继承自UserControl的控件,此控件的Text属性继承自UserControl。我注意到,当我键入时,我的自定义控件的属性列表(由Intellisense提供)中没有文本条目。为什么UserControl的Text属性在Intellisense中不存在?

我是否必须在自定义控件中声明新的Text属性(使用new关键字)以故意隐藏基本Text属性?这样做需要我自己调用OnTextchanged(),并且需要更多代码,而使用基本/继承的Text属性对我来说就足够了。但是,我不喜欢我的控件属性不在Intellisense列表中。

任何建议将不胜感激!谢谢!

+0

它被隐藏,因为用户控件能够显示文字没有意义的方式。它被设计成其他控件的容器。很可能你应该从Control中派生出来,这个问题还不清楚。如果不是,就像使用Label显示文本一样,那么您必须重写Text属性并撤消基类的属性。 – 2013-04-28 18:32:30

+0

@HansPassant我不选择Control的第一个原因是UserControl支持设计师拖拽其他控件到它,而用Control来做这件事,恐怕我必须先使用一些技巧。第二个是我不知道为什么点击Control并不关注它,我希望控件在用户点击时获得焦点。如果你知道如何做到这一点,请告诉我。无论如何,在设计时拖动n drop使UserControl几乎成为我的选择。谢谢! – 2013-04-28 19:08:46

+0

出于同样的原因,UserControl不会获得焦点。控制不是问题。在设计UserControl并将其放在表单上后,您无法再向其添加控件。不是没有定制设计师。 – 2013-04-28 19:24:00

回答

2

尝试下面的属性

[EditorBrowsable(EditorBrowsableState.Always)] 
[Browsable(true)] 
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] 
[Bindable(true)] 
public override string Text 
+1

谢谢Damith,实际上只是覆盖Text属性(不添加更多代码)可以使其可见,不需要更多的属性。也许所有虚拟成员默认情况下都隐藏在Intellisense中。非常感谢你! – 2013-04-28 19:12:59

相关问题