asp.net自定義控制元件中ToolboxBitmap後設資料設定詳細說明

iDotNetSpace發表於2009-04-15
   在asp.net應用的過程中,少不了的會建立一些自定義伺服器控制元件,但控制元件完成後,預設的圖示是統一的藍色齒輪的圖示,沒有個性,也不能很好的直觀表示控制元件的作用,這時我們需要自己新增自定義的工具圖示
    自定義圖示為16畫素寬高,256色的BMP圖片,並設定圖示檔案的BuildingAction(生成操作)屬性為嵌入的資源,但我們新增完成後在工具箱裡顯示不了自定義圖示,這與我們類檔案的名稱空間有關


例一:
    說明:控制元件未定義名稱空間,圖示檔名與控制元件的名稱一致
    
    控制元件集名稱為:MyControls.dll
    控制元件名稱為:MyBox(未自定義名稱空間)
    圖示名稱為:MyBox.bmp
    MyBox新增後設資料(此結構下也可以不新增後設資料,預設會查詢MyBox.bmp圖示檔案,網上大多是這樣介紹的)
    
    
    在工具箱中新增此控制元件,可以看到控制元件顯示了自定義圖示

例二:
    說明:控制元件定義了名稱空間:Boxes,圖示檔名與控制元件名一致
   
    控制元件集名稱為:MyControls.dll 
    控制元件名稱為:MyBox
    自定義名稱空間:Boxes
    圖示名稱為:MyBox.bmp
    MyBox新增後設資料
    
    
    在工具箱中新增此控制元件,但這個時候控制元件顯示的是預設的齒輪圖示,而不是自定義的MyBox.bmp圖示
    
    這個時候我們要做的是重新命名原來的MyBox.bmp以適應控制元件的名稱空間:Boxes.MyBox.bmp
    注意上面新增的後設資料的圖片name不用修改
    這時再新增控制元件到工具箱中,又可以看到可愛的自定義圖示了

例三:
    說明:控制元件定義了名稱空間:Boxes,圖示檔名與控制元件名不相同
   
    控制元件集名稱為:MyControls.dll 
    控制元件名稱為:MyBox
    自定義名稱空間:Boxes
    圖示名稱為:Box.bmp
    MyBox新增後設資料
    
    重新命名Box.bmp以適應控制元件的名稱空間:Boxes.Box.bmp
    再新增控制元件到工具箱中

在MSDN文件中提到:
    ToolboxBitmapAttribute (t, name)
    引數
t
一個 Type,將在它的定義程式集中搜尋點陣圖資源。
name
嵌入的點陣圖資源的名稱。
備註
此建構函式在定義由 t 引數指定的型別的程式集中搜尋嵌入的資源。此建構函式搜尋名為 namespace.name 的資源,其中 namespace 是由 t 引數指定的類的定義所在的名稱空間。例如,假定 ControlA 是 AssemblyA.dll 中的 NamespaceA 的類,而且已將“MyBitmap.bmp”傳遞給 name 引數。則建構函式在 AssemblyA.dll 中搜尋命名為 NamespaceA.MyBitmap.bmp 的資源。

    在新增的時候最好是手動新增到工具箱,VS自動新增時很奇的不會顯示自定義圖示,它預設新增的是控制元件專案下的obj資料夾下的DLL檔案,如果你手動新增同一檔案,卻是會顯示自定義圖示的!很奇怪的問題啊,有哪位仁兄知道如何解決這個自動新增不能顯示自定義圖示的問題麼?

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-589271/,如需轉載,請註明出處,否則將追究法律責任。

相關文章