本文將逐步告訴您,如何從 Managed 程式碼擴充為 Microsoft Office 系統建立 Visual Studio 工具與設定
遮罩 和 Microsoft Office 2003
CommandBar 控制
圖片 屬性。
圖片 屬性允許您設定
CommandBar 控制項上所顯示的影像。
遮罩 屬性可能會用來建立該影像的透明背景。
建立新的 Visual Basic.NET Excel 活頁簿專案
- 在 Microsoft Visual Studio.NET 2003年中的 [檔案] 功能表上指向 [新增],然後按一下 [專案]。
出現 [新增專案] 對話方塊。- 在 [專案類型] 清單中展開 [Microsoft Office 系統專案,] 然後按一下 [Visual Basic 專案]。
- 在 [範本] 清單中,按一下 Excel 活頁簿。
- 在 [名稱] 方塊中輸入 ExcelCommandbar,],然後再按一下 [確定]]。
Microsoft Office 專案 精靈] 隨即出現。 - 按一下 [完成]。
- 在 [專案] 功能表上按一下 [加入參考]。
出現 [加入參考] 對話方塊。- 按一下 [.NET] 索引標籤。在元件清單按一下 System.Drawing.dll,然後按一下 [選取]。
- 在元件清單按一下 stdole,然後按一下 [選取]。
- 按一下 [確定]。
- 將下列指示詞加入 ThisWorkbook.vb 頂端:
Imports System.Reflection
將影像資源加入至您的專案
本章節中會將兩個內嵌的影像資源加入至專案。一個資源是
CommandBar 控制項的
圖片] 屬性。
Mask 屬性對於其他資源。
加入至那做為您 CommandBar 控制將映像您專案的影像資源- 按一下 [專案] 功能表 加入元件。出現 [加入新項目] 對話方塊。
- 在 [範本] 清單中,按一下 點陣圖檔案。
- 命名影像 Picture.bmp,然後按一下 [開啟舊檔]。
點陣圖開啟供編輯 點陣圖編輯器] 中。 - 在 [檢視] 功能表上按一下 [屬性視窗]。 同時設定 [寬度] 屬性與點陣圖] 的 [高度] 屬性為 16。
- 填滿整個點陣圖區域使用紅色,並再繪製點陣圖的中央的 [綠色圓圈。
- 在 [方案總管] 中 Picture.bmp,] 上按一下滑鼠右鍵,然後按一下 [內容]。 將 [建置動作] 屬性變更為 [內嵌資源。
- 按一下 [檔案] 功能表 儲存 Picture.bmp。
加入至您專案那做為您 CommandBar 控制影像的遮罩的影像資源- 在 [方案總管] 中按一下 [Picture.bmp]。
- 按一下 [檔案] 功能表 複製。
- 按一下 [檔案] 功能表 貼。
名為 Picture.bmp 複製 的新檔案加入至您的專案。 - 在 [方案總管] 中 Mask.bmp,] 上按一下滑鼠右鍵,然後按一下 [重新命名]。將名稱改 Mask.bmp。
- 在 [方案總管] 中 Mask.bmp,] 上按一下滑鼠右鍵,然後按一下 [開啟舊檔]。變更影像背景色彩,白色,並變更圓形色彩為黑色。
附註遮罩與圖片會新增至 CommandBar 控制項,遮罩的黑色區域會出現。白色的區域是透明的。 - 按一下 [檔案] 功能表 儲存 Mask.bmp。
加入程式碼,以建立一個 CommandBar 和 CommandBar 控制項
本章節中,您將程式碼加入至專案,載入資料流中的內嵌的影像資源、 建置該 CommandBar 和 CommandBar] 控制項,然後設定
圖片 屬性和
CommandBar 控制項的 [
遮罩] 屬性使用。
- 將下列類別層級的變數加入至 OfficeCodeBehind 類別:
WithEvents CBarButton As Office.CommandBarButton
- 將下列程式碼加入至 ThisWorkbook_Open 事件處理常式中 ThisWorkbook.vb:
'Get a reference to this assembly.
Dim ThisAssembly As [Assembly]
ThisAssembly = [Assembly].GetExecutingAssembly()
'Load the Picture and the Mask image resources.
Dim imgStreamPic As System.IO.Stream, imgStreamMask As System.IO.Stream
imgStreamPic = ThisAssembly.GetManifestResourceStream("ExcelCommandBar.Picture.bmp")
imgStreamMask = ThisAssembly.GetManifestResourceStream("ExcelCommandBar.Mask.bmp")
'Obtain references to IPictureDisp for both images.
Dim ax As New MyAxHost
Dim Pic As stdole.IPictureDisp, Mask As stdole.IPictureDisp
Pic = ax.IPictureDisp(Drawing.Image.FromStream(imgStreamPic))
Mask = ax.IPictureDisp(Drawing.Image.FromStream(imgStreamMask))
'Add a temporary CommandBar and a CommandBar button.
Dim CBar As Office.CommandBar
CBar = ThisApplication.CommandBars.Add("My CommandBar", , , True)
CBarButton = CType(CBar.Controls.Add(Office.MsoControlType.msoControlButton), _
Office.CommandBarButton)
CBarButton.Style = Office.MsoButtonStyle.msoButtonIconAndCaption
CBarButton.Caption = "My Button"
CBarButton.Tag = "My_Button"
CBarButton.Picture = Pic
CBarButton.Mask = Mask
CBar.Visible = True
- 立即之後 ThisWorkbook_Open 事件處理常式 ThisWorkbook.vb 中加入下列類別 MyAxHost,:
Public Class MyAxHost
Inherits System.Windows.Forms.AxHost
Public Sub New()
MyBase.New("59EE46BA-677D-4d20-BF10-8D8067CB8B33")
End Sub
Public Shared Function IPictureDisp(ByVal Image As System.Drawing.Image) As stdole.IPictureDisp
IPictureDisp = CType(AxHost.GetIPictureDispFromPicture(Image), stdole.IPictureDisp)
End Function
End Class - 將下列函式加入至 OfficeCodeBehind 類別:
Private Sub CBarButton_Click(ByVal Ctrl As Microsoft.Office.Core.CommandBarButton, _
ByRef CancelDefault As Boolean) Handles CBarButton.Click
MessageBox.Show("You clicked My Button!")
End Sub - 按下 F5 以建置並執行專案。
您注意到 ExcelCommandBar.xls 會在 Excel 中開啟。活頁簿開啟時,我 CommandBar 隨即出現。我 CommandBar 有一個具有透明圖像的 指令按鈕 控制項。
如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
286460
(http://support.microsoft.com/kb/286460/
)
HOWTO: 設定遮罩和圖片內容的 Office XP CommandBars
文章編號: 824017 - 上次校閱: 2004年1月15日 - 版次: 2.4
這篇文章中的資訊適用於:
- Microsoft Office Excel 2003
- Microsoft Office Word 2003
- Microsoft Visual Studio Tools for the Microsoft Office System
| kbmt kbhowtomaster kbpia KB824017 KbMtzh |
機器翻譯重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:
824017
(http://support.microsoft.com/kb/824017/en-us/
)
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。