У меня есть пользовательский элемент управления, определенный следующим образом:
public partial class FooControl : UserControl
{
private System.Windows.Forms.GroupBox groupBox1;
...
Я хотел, чтобы groupBox1.Text был доступен напрямую от дизайнера, поэтому я выбрал очевидное решение и создал следующее свойство в моем FooControl:
[CategoryAttribute("Appearance"), DescriptionAttribute("The text associated with this control.")]
public string Text
{
get { return groupBox1.Text; }
set { groupBox1.Text = value;}
}
Это не работает, потому что Text уже определен в моем суперклассе (на самом деле, он немного в неведении из-за атрибута browseable = false, но я в конце концов его нашел):
public class UserControl : ContainerControl
{
[Bindable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public override string Text { get; set; }
Простой обходной путь - использовать «Text2» вместо «Text» в качестве имени свойства, и в этом случае все работает нормально.
Однако, если я использую переопределение или новый, мой код компилируется (и работает), но мое свойство Text не отображается в конструкторе.
В чем причина такого поведения? Есть ли обходной путь (кроме использования другого имени свойства)?