自定義伺服器控制項ImageButton

2022-07-30 11:30:15 字數 3376 閱讀 3959

在日常專案開發中,我們會經常用到自定義控制項,我們通過乙個簡單的例子來說明,在日常專案中我們經常會用到,或者控制項,我們以imagebutton為例來說明。

"

imgbtn

" runat="

server

" imageurl="

~/images/add.png

" />

很多時候我們需要在很多頁面上放上面這段**,每次都要重複設定imageurl 當路徑換了。或者名稱換了,我們需要替換很多地方。有沒有更簡單的方法呢,使用自定義控制項。在專案中我們經常使用一些新增 刪除,修改的按鈕 來代替按鈕。我們以此為例來說明。

1、建立乙個類庫專案,或者web控制項庫專案都可以,新增乙個類(class)。繼承imagebutton

public

class

custimagebutton : imagebutton

2、我們在同乙個專案中,一般使用的大多是一樣的。比如新增 刪除,這些按鈕。那麼我們在定義乙個列舉 用於區分不同的,我們定義了四種型別 新增 修改 檢視 刪除

public

enum

custimagetype

3、定義乙個屬性,用於設定 的型別

[bindable(true

)] [category(""

)] [defaultvalue(custimagetype.add)]

[localizable(

true

)]

public

custimagetype imagetype

set }

我們定義了乙個自定義的屬性imagetype,型別是custimagetype列舉型別。為了便於在控制項的屬性視窗顯示,我們設定了幾個特性

[bindable(true

)] 指定成員是否通常用於繫結

[category(""

)] 指定當屬性或事件顯示在乙個設定為「按分類順序」模式的 system.windows.forms.propertygrid 控制項中時,用於給屬性或事件分組的類別的名稱

[defaultvalue(custimagetype.add)] 指定屬性的預設值

[localizable(

true)] 指定屬性是否應本地化

4、重寫imagebutton控制項的render方法

protected

override

void

render(htmltextwriter writer)

base

.render(writer);

}

在頁面中引用如下:

c#" autoeventwireup="

true

" codebehind="

index.aspx.cs

" inherits="

webdemo1.index

" %>

custcontrol

" namespace="

custcontrol

" tagprefix="

cc1" %>

"-//w3c//dtd xhtml 1.0 transitional//en""

">

"">

執行效果

換成如下**

顯示

可以看出 非常方便,只需要在屬性視窗設定 imagetype 就可以輕鬆實現顯示。

但是這樣也有乙個問題,我們使用的imageurl的路徑是我們web專案中的路徑,當我們的路徑改了,或者換了,我們仍然需要重複的去修改程式,而且每次引用這個控制項 我們都需要在web專案中新增對應路徑的,非常麻煩,有木有更好的方法呢,當然 那就是使用嵌入的資源這是.net2.0開始引入的。

我們在我們的控制項專案中新增剛才用到的4張。

選中其中一張右鍵點選屬性 把生成操作型別改成嵌入的資源

然後在我們的應用程式集檔案中新增

新增如下**

[assembly: webresource("

custcontrol.images.add.png

", "

img/png")]

[assembly: webresource(

"custcontrol.images.delete.png

", "

img/png")]

[assembly: webresource(

"custcontrol.images.edit.png

", "

img/png")]

[assembly: webresource(

"custcontrol.images.view.png

", "

img/png

")]

custcontrol是命名空間,images是資料夾名稱後面是,用.分隔

接下來就是我們如何在程式中訪問這些了。

.net提供了訪問web資源檔案的類和方法,我們這地方使用

page.clientscript.getwebresourceurl
方法來訪問

所以我們修改render方法中的**為:

protected

override

void

render(htmltextwriter writer)

base

.render(writer);

}

在頁面不需要引入 使用效果也是一樣。很方便吧,試試吧!

直接上**:

download

自定義伺服器控制項ImageButton

在日常專案開發中,我們會經常用到自定義控制項,我們通過乙個簡單的例子來說明,在日常專案中我們經常會用到,或者控制項,我們以imagebutton為例來說明。imgbtn runat server imageurl images add.png 很多時候我們需要在很多頁面上放上面這段 每次都要重複設定...

自定義伺服器控制項開發(1)

1 呈現伺服器控制項 如果控制項要呈現使用者介面元素或者任何其他客戶端可見的元素,則應從 webcontrol 類派生該控制項。如果控制項要呈現在客戶端瀏覽器中不可見的元素 如隱藏元素或 meta 元素 則應從 control 派生該控制項。control 最重要的方法是 render 方法,它允許...

android中自定義標籤ImageButton

android的imagebutton標籤是沒有text屬性的,那麼我們要在乙個imagebutton裡放置文字時一般有兩種方法 第一種是使用ps將文字放在上,還有一種是自定義標籤。自定義標籤的 如下 import android.content.context import android.gra...