2011-09-08 16 views
1

asp.netのusercontrol [ascxファイル]から抽象化されたイベントをコンテナのWebフォームページに実際どのように公開するのですか。これは、私は(私は、ユーザーコントロールは、uが尋ねるが、それはシナリオだ、なぜこれがWebフォーム自体を行うことができる知っているWebフォームがASCXファイルをユーザーコントロールし、それを検証するためのバリデータとデータ・バインドのCheckBoxListを入れて作成した私のシナリオ、asp.net usercontrolsからコンテナのWebフォームページへのイベントの公開

  1. です)

  2. は、今私は、検証の結果を生成するOnValidatingと呼ばれるコンテナページにイベントを公開したかった

イベントのシグネチャは以下の通りです:

public delegate void Validating(object source,EventArgs e); 

public event Validating OnValidating; 

public void InvokeOnValidating(EventArgs e) 
     { 
      Validating handler = OnValidating; 
      if (handler != null) handler(this, e); 
     } 

msdnのドキュメントによれば、ページフレームワークは、購読と購読解除のイベントを処理します。だから、私がする必要があるのは、検証が失敗したときにイベントを呼び出すことだけです。私はときに私の地獄が私のevent invoker[InvokeOnValidating]event delegate[Validating]はインテリセンスのリストに示されているのはなぜ他のすべてのパブリックpropertesが

  • をしたとき、私はプロパティウィンドウでイベントを表示できなかった幸せはなく、

    1. たグレートevent[OnValidating]と一緒にusercontrolid.と入力します。イベントだけを公開したい。

    2. また、私はページにusercontrol内で作成されたイベントTextboxChangedを購読することができますか?もしそうなら、私にコードを教えてください。

    注:私は長い説明よりも多くのコードを見てみたいあなたは概念を混合している

  • 答えて

    5

    、あなたはこのコードを試し、イベントを登録するデリゲートを必要としない、と私は説明します変更や制御を使用してページで

    public event EventHandler Validating; 
        private void OnValidating(EventArgs ea) 
        { 
         var e = Validating; 
         if (e != null) 
          e(this, ea); 
        } 
    

    下のご質問にお答えしようとすると、にに気づく、フレームワークは、すべてのイベントのためにこれを追加します。

    <uc:MyUserControl OnValidating="myhandlermethodinpage" /> 
    
    1. VSは100%正確ではないため、コントロールのプロパティが表示されないことがあります。兵器はより信頼性が高い
    2. プライベートとして設定されていないため、イベントのみ公開する必要があります。
    3. これが可能かどうかわからない場合は、コントロール内のテキストボックスのイベントをキャプチャして、新しいイベントを発生させる必要があります。

    はコメントに追加できませんでしたが、あなたが必要とする基本的には場合は、カスタムイベント引数は、次のような操作を行います。

    public event EventHandler<CustomEventArgs> Validating; 
    private void OnValidating(CustomEventArgs ea) 
    { 
        var e = Validating; 
        if (e != null) 
         e(this, ea); 
    } 
    public class CustomEventArgs:EventArgs{ 
        public int MyProperty { get; set; } 
    } 
    
    +0

    だから、ポイント、メダル、バッジはSOで、ここで何を意味します。あなたの答えについては、point1のために私はあなたがプロパティグリッドに表示する必要がないプロパティの '[Browsable(False)]'を設定できることを知っています。私は解決策を提供していましたが、デフォルトでは、パラメータとして 'EventArgs'クラスのみを受け入れるので、別のクラスの私のeventargsを渡すようにするにはどうすればいいですか? – Deeptechtons

    +0

    最近、 –

    +0

    HEHEビンゴ、あなたはすべてを正しく答えました:)コンディションを混ぜることについて何が間違っていましたか、ここでは代理人を使うべきではない – Deeptechtons

    関連する問題