自定義控制項的事件

2022-02-04 00:18:27 字數 2801 閱讀 2100

自定義控制項的事件根據需要有兩種方式來引發

1繼承ipostbackdatahandler 介面

實現

boolloadpostdata(string postdatakey, namevaluecollection postcollection);

voidraisepostdatachangedevent();

兩個方法,大致都是這樣

boolipostbackdatahandler.loadpostdata(string postdatakey, namevaluecollection postcollection)

return false;

}voidipostbackdatahandler.raisepostdatachangedevent()

2 繼承ipostbackeventhandler 介面

實現voidraisepostbackevent(string eventargument);

方法大致實現方法:

voidipostbackeventhandler.raisepostbackevent(string eventargument)

//給html控制項註冊指令碼.表明回發

我要使用 __dopostback(eventtarget, eventargument) 這個方法進行處理.

這個方法進行註冊如下:

...attributes.add("onclick", this.page.getpostbackclientevent(this, eventargument));

如:button的:

protected

virtual

voidraisepostbackevent(string eventargument)

this.onclick(eventargs.empty);

this.oncommand(new

commandeventargs(this.commandname, this.commandargument));

}

他註冊的 事件指令碼 在這個方法裡面

protected

override

voidaddattributestorender(htmltextwriter writer)

看**:

1private

void

processpostdata(namevaluecollection postdata, 

bool

fbeforeload)27

if(postdata 

!=null)8

15control control 

=this

.findcontrol(str);

16if

(control 

==null)17

24this

._leftoverpostdata.add(str, 

null

);25}26

continue;27

}28ipostbackdatahandler postbackdatahandler 

=control.postbackdatahandler;

29if

(postbackdatahandler 

==null)30

35}36else

3742if(

this

._controlsrequiringpostback 

!=null)43

46}47}

48}49arraylist list 

=null;50

if(this

._controlsrequiringpostback 

!=null)51

62if

(handler2 

==null)63

));65}66

if(handler2.loadpostdata(str2, 

this

._requestvaluecollection))

6770

continue;71

}72if(fbeforeload)

7378

list.add(str2);79}

80}81this

._controlsrequiringpostback 

=list;82}

83}8485

1internal

void

raisechangedevents()215

}16}17

}18}19

2021221

private

void

raisepostbackevent(namevaluecollection postdata)27

else818

if((control 

!=null

) &&

(control.postbackeventhandler 

!=null

))1923}

24else

2528}29

}3031

自定義控制項的事件

之前做了一些自定義控制項 user control 有一些內部控制項的事件想要發布出來,但是查了一下文件,發現一篇文章裡面寫的方法非常複雜,又是要委託,又是要註冊的,反正看得暈暈乎乎的,乾脆就放棄了。今天又遇到了這個問題,得到建軍的幫助,解決啦,發現非常簡單啊。貼個例子在下面 public even...

C 自定義控制項和自定義事件

今天在專案開發的過程中,因為好幾個頁面都要用到同乙個分類控制項,就想著把它做成乙個自定義控制項,然後隨託隨用。在網上找了些列子,自定義控制項的寫法不用多說,主要說一下,如何將控制項的事件,封裝到自己定義的控制項的自定義事件裡面。這裡同時也當作對自定義事件的乙個複習吧。首先控制項是乙個由treelis...

自定義控制項新增事件

事件,委託,總是看起來有點繞,不過本文不介紹這些,只說說如何為自定義控制項新增自定義事件。本文所說的自定義控制項,非繼承其他現有microsoft控制項或者組合控制項,而是完全繼承usercontrol的東西。既然不是繼承自其他現有控制項或者控制項組合,在特定需求下,有新增自定義事件的可能性,或者對...