2012-02-21 8 views
0

私はUserControlクラスから派生したクラスで作業しています。このクラスは、[Browsable(false)][EditorBrowsable(EditorBrowsableState.Never)]という属性を、Controlクラスから継承したイベントTextChangedに追加します。ベースイベントへの属性の追加

私の新しいコントロールはTabPageに匹敵します。 TabControlに匹敵する別のクラスの内部で使用されます。これが重要な理由は、コントロールのユーザーがこのイベントにアクセスできるようにする必要があるためです。 NETの反射板では、次のコードでこれら二つの属性「上書きします」(また、これら2つの属性が追加されますPanelから継承)TabPage制御することを参照してください、私は私のプロジェクトにこれをコピーし

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

をし、限り、私はそれが正しく動作することがわかりますが、コンパイラは私に警告を与える: "'' System.Windows.Forms.Frameset.FunctionPanel.TextChanged 'は、継承されたメンバー' System.Windows.Forms.UserControl.TextChanged 'を隠す。隠れが意図されていればキーワード。 "私は古いTextChangedイベントを隠したくありません。ただBrowsable(false)属性を削除したいだけです。古いイベントを隠すことは、表面上で仕事を完了させるように見えますが、それを行うのは醜いラウンドアバウトのようです。古いイベントを隠すことなくこれを行う方法はありますか?もしそうでなければ、コンパイラに警告を与えないようにする方法がありますか?事前に

おかげで、 ブランドン

答えて

5

あなたは次のことを試すことができます。可能なすべての状況で安全でなければなりません。

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

ありがとうございます!これはまさに私が探しているものです! – aboveyou00