Добавить атрибут к базовому событию - PullRequest
0 голосов
/ 21 февраля 2012

Я работаю над классом, производным от класса UserControl. Этот класс добавляет атрибуты [Browsable(false)] и [EditorBrowsable(EditorBrowsableState.Never)] к событию TextChanged, которое унаследовано от класса Control.

Мой новый элемент управления сравним с TabPage; он используется внутри другого класса, сравнимого с TabControl. Это важно потому, что это означает, что мне нужен пользователь элемента управления, чтобы иметь доступ к этому событию. В отражателе .NET мы видим, что элемент управления TabPage (который наследует от Panel, который также добавляет эти два атрибута) «переопределяет» эти два атрибута с помощью следующего кода:

[Browsable(true), EditorBrowsable(EditorBrowsableState.Always)]
public event EventHandler TextChanged;

Я скопировал это в свой проект, и насколько я могу судить, он работает правильно, но компилятор выдает мне предупреждение: «System.Windows.Forms.Frameset.FunctionPanel.TextChanged« скрывает унаследованный член »System.Windows .Forms.UserControl.TextChanged '. Используйте ключевое слово new, если было запланировано скрытие. " Я не хочу скрывать старое событие TextChanged; Я просто хочу удалить атрибут Browsable(false). В то время как скрытие старого события, кажется, делает работу на поверхности, это кажется уродливым и окольным способом сделать это. Есть ли способ сделать это, не скрывая старого события? А если нет, то есть ли способ заставить компилятор перестать давать мне предупреждение за это?

Заранее спасибо, Brandon

1 Ответ

5 голосов
/ 21 февраля 2012

Вы можете попробовать следующее.Это должно быть безопасно во всех возможных ситуациях:

    [Browsable(true), EditorBrowsable(EditorBrowsableState.Always)]
    public new event EventHandler TextChanged {
        add {
            base.TextChanged += value;
        }
        remove {
            base.TextChanged -= value;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...