例一:
說明:控制元件未定義名稱空間,圖示檔名與控制元件的名稱一致
控制元件集名稱為: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檔案,如果你手動新增同一檔案,卻是會顯示自定義圖示的!很奇怪的問題啊,有哪位仁兄知道如何解決這個自動新增不能顯示自定義圖示的問題麼?