2012-02-21 2 views
0

Я работаю над классом, который является производным от класса 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 ». если укрытие было предназначено ». Я не хочу скрывать старое событие TextChanged; Я просто хочу удалить атрибут Browsable(false). Хотя скрытие старого события, похоже, делает работу на поверхности, это кажется уродливым и обходным способом сделать это. Есть ли способ сделать это, не скрывая старого события? А если нет, есть ли способ заставить компилятор прекратить давать мне предупреждение за это?

Спасибо заранее, Brandon

ответ

5

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

[Browsable(true), EditorBrowsable(EditorBrowsableState.Always)] 
    public new event EventHandler TextChanged { 
     add { 
      base.TextChanged += value; 
     } 
     remove { 
      base.TextChanged -= value; 
     } 
    } 
+0

Спасибо! Это именно то, что я ищу! – aboveyou00

Смежные вопросы