asp.Netでオブジェクトイベントの処理方法を動的に呼び出すにはどうすればいいですか?
2921 ワード
gridview, onpageindexchanging ?
。
補足:
回答ありがとうございます.
上は例を挙げただけで、私はページを分けたいのではなく、イベント依頼で指定された方法を動的に呼び出したいだけで、反射に関連しているはずですが、関連する方法は見つかりませんでした.例えばtextboxがあり、ontextchangeで指定された方法が何なのか分かりませんが、この方法を呼び出したいのですが、イベント依頼のパラメータが固定されているので、この考えは実行可能なはずですが、具体的な方法は分かりません.
=====================================================================
//
イベントコンテナを定義します.継承したクラスがあれば、定義する必要はありません.
private
EventHandlerList _events;
protected
EventHandlerList Events {
get
{
if
(_events
==
null
) { _events
=
new
EventHandlerList(); }
return
_events; } }
//
クラスで、委任を定義します.
public
delegate
void
MyHandler(
object
sender, Event e);
//
イベントのKEYの定義
private
static
readonly
object
MyObj
=
new
object
();
//
この依頼を使用して、イベントを定義します.
public
event
MyHandler MyEvent { add { Events.AddHandler(MyObj, value); } remove { Events.RemoveHandler(MyObj, value); } }
//
イベントの使用方法
private
void
OnMyMethodHandler(Event e) { MyHandler handler
=
(MyHandler)Events[MyObj];
if
(handler
!=
null
) { handler(
this
, e); } }
public
void
MyMethod2(){
//
あなたが使うところでこの方法を調整します.
OnMyMethodHandler(Event.Empty);}
//
これはあなたが指定した方法を知らないことですb他の人が使っているかもしれません.
public
void
b(
object
sender,Event e){}
//
他の人がこのように使う
//
もしあなたがclass Aなら
A a
=
new
A();a.MyEvent
+=
new
MyHandler(b);
//
MyMethod 2を実行するとbが実行されます
//
bがどの値を返すかを望む場合は、Eventを自分で定義し、eを通じてbとの情報を交流することができます.
====================================================================
フロント:
バックグラウンド:
public viod aa(object sender, GridViewPageEventArgs e){
GridView1.PageIndex = e.NewPageIndex;
}
または
フロント:
バックグラウンド
protected void Page_Load(object sender, EventArgs e){
GridView1.PageIndexChanging += new GridViewPageEventHandler(aa);
}
public viod aa(object sender, GridViewPageEventArgs e){
GridView1.PageIndex = e.NewPageIndex;
}