自定義控制項重寫TagName

2021-05-27 11:50:56 字數 1138 閱讀 2070

自定義控制項在輸出html的時候都會預設把內容放在之間,如果要換成其他標籤可以重寫tagkey,**如下:

protected override htmltextwritertag tagkey  

}

以上**只支援htmltextwritertag列舉出來的標籤,但如果要換成列舉中沒有的標籤怎麼辦?

很多教程中都提到可以重寫tagkey來實現自定義控制項的輸出標籤,而且也提到重寫tagname可以實現tagkey不包含的標籤。但是經過試驗發現重寫tagname並不能辦到實現自定義標籤。研究了一下發現renderbegintag方法是這樣定義的:

public virtual void renderbegintag(htmltextwriter writer)  

這下明白了,只有當tagkey被重寫為htmltextwritertag.unknown的時候才能輸出自定義標籤,所以,重寫tagname屬性時也要重寫tagkey屬性。

protected override htmltextwritertag tagkey  

} protected override string tagname

}

這樣就可以輸出這樣的標籤了。

但有時候會有特殊要求,需要直接輸出內容,不喜歡把內容巢狀在html標籤之間怎麼辦?經過多次測試發現重寫render輸出的就不帶html標籤,而重寫rendercontents就一定會輸出html標籤。**如下:

protected override void render(htmltextwriter writer)  

這樣輸出的就沒有html標籤,檢視html源**結果:this is test

如果**是這樣:

protected override void rendercontents(htmltextwriter writer)  

這樣輸出的就會帶有html標籤,檢視html源**結果:this is test。找了些資料也看不懂不知道他們之間有什麼區別,希望遇到過這類問題的朋友一起來**,同時也希望能把我的個人經驗告訴大家,希望能幫助到人。

自定義控制項重寫OnMouseDown事件,不起作用

在寫乙個自定義控制項時,重寫了控制項的onmousedown事件如下 private point mousedownlocation private bool ifmousedown false protected override void onmousedown mouseeventargs e...

自定義控制項 自定義鐘錶

private context mcontext 畫筆 private paint mpaint 控制項的寬 private int mwidth x方向的圓心座標 private int center 鐘錶的半徑 private int mradio 圓環的寬 private int stroke...

自定義控制項

首先是以下這幾項,attribute defaultproperty指定元件的預設屬性,toolboxdata指定當從ide工具中的 工具箱中拖動自定義控制項時為它生成的預設標記 defaultproperty text toolboxdata mycontrol runat server 上面這些...