كيفية القيام بما يلي: إضافة أيقونات مخصصة لشريط الأدوات و عناصر القائمة
ينطبق على |
---|
تنطبق المعلومات الموجودة في هذا الموضوع فقط على أنواع المشاريع وإصدارات Microsoft Office التالية: لمزيد من المعلومات، راجع الميزات المتوفرة بواسطة تطبيقات Office و نوع المشروع. نوع المشروع
إصدار Microsoft Office
|
يضيف هذا المثال أيقونة إلى زر شريط الأوامر على القائمة المخصصة في Microsoft Office Outlook. الأيقونة مضمنة في موارد المشروع. للحصول على مزيد من المعلومات حول موارد المشروع، راجع Adding and Editing Resources (Visual C#) و كيفية القيام بما يلي: إضافة أو إزالة الموارد.
على الرغم من أن هذا المثال مخصص لـ Outlook, يمكن استخدام الجزء من هذه التعليمة البرمجية الذي يضيف أيقونة إلى زر شريط الأوامر، لإضافة رموز إلى زر شريط الأوامر في أي من التطبيقات المسرودة في الجدول أعلاه.
لإضافة أيقونات مخصصة
أضف التعليمات البرمجية إلى ملف ThisAddIn.vb أو ThisAddIn.cs الخاص بمشروع Outlook لإنشاء عناصر التحكم CommandBarPopup و CommandBarButton التي تمثل القائمة المخصصة و أوامر القائمة . تتحقق هذه التعليمة البرمجية مما إذا كانت القائمة موجودة . إذا كانت موجودة ، تقوم التعليمة البرمجية بإزالة القائمة . ثم تضيف قائمة جديدة .
Private MenuBar As Office.CommandBar Private newMenuBar As Office.CommandBarPopup Private ButtonOne As Office.CommandBarButton Private menuTag As String = "AUniqueName" Private Sub ThisAddIn_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup RemoveMenubar() AddMenuBar() End Sub Private Sub AddMenuBar() Try MenuBar = Me.Application.ActiveExplorer().CommandBars.ActiveMenuBar newMenuBar = MenuBar.Controls.Add( _ Office.MsoControlType.msoControlPopup, _ Temporary:=False) If newMenuBar IsNot Nothing Then newMenuBar.Caption = "See New Icon" newMenuBar.Tag = menuTag ButtonOne = newMenuBar.Controls.Add( _ Office.MsoControlType.msoControlButton, _ Before:=1, Temporary:=False) With ButtonOne .Style = Office.MsoButtonStyle _ .msoButtonIconAndCaption .Caption = "New Icon" .FaceId = 65 .Tag = "c123" .Picture = getImage() End With newMenuBar.Visible = True End If Catch Ex As Exception MsgBox(Ex.Message) End Try End Sub Private Sub RemoveMenubar() Try ' If the menu already exists, remove it. Dim foundMenu As Office.CommandBarPopup = _ Me.Application.ActiveExplorer().CommandBars.ActiveMenuBar. _ FindControl(Office.MsoControlType.msoControlPopup, _ System.Type.Missing, menuTag, True, True) If foundMenu IsNot Nothing Then foundMenu.Delete(True) End If Catch Ex As Exception MsgBox(Ex.Message) End Try End Sub
private Office.CommandBar menuBar; private Office.CommandBarPopup newMenuBar; private Office.CommandBarButton buttonOne; private string menuTag = "AUniqueTag"; private void ThisAddIn_Startup(object sender, System.EventArgs e) { RemoveMenubar(); AddMenuBar(); } private void AddMenuBar() { try { menuBar = this.Application.ActiveExplorer().CommandBars.ActiveMenuBar; newMenuBar = (Office.CommandBarPopup)menuBar.Controls.Add( Office.MsoControlType.msoControlPopup, missing, missing, missing, false); if (newMenuBar != null) { newMenuBar.Caption = "See New Icon"; newMenuBar.Tag = menuTag; buttonOne = (Office.CommandBarButton) newMenuBar.Controls. Add(Office.MsoControlType.msoControlButton, System. Type.Missing, System.Type.Missing, 1, true); buttonOne.Style = Office.MsoButtonStyle. msoButtonIconAndCaption; buttonOne.Caption = "New Icon"; buttonOne.FaceId = 65; buttonOne.Tag = "c123"; buttonOne.Picture = getImage(); newMenuBar.Visible = true; } } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void RemoveMenubar() { // If the menu already exists, remove it. try { Office.CommandBarPopup foundMenu = (Office.CommandBarPopup) this.Application.ActiveExplorer().CommandBars.ActiveMenuBar. FindControl(Office.MsoControlType.msoControlPopup, System.Type.Missing, menuTag, true, true); if (foundMenu != null) { foundMenu.Delete(true); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
قم بإنشاء فئة جديدة باسم ConvertImage. تستخدم هذه الفئة System.Forms.Axhost لتحويل ملف Image إلى نوع صورة يمكن تطبيقها على عنصر القائمة.
<Global.System.Security.Permissions.PermissionSetAttribute _ (Global.System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _ Public Class ConvertImage Inherits System.Windows.Forms.AxHost Public Sub New() MyBase.New("59EE46BA-677D-4d20-BF10-8D8067CB8B32") End Sub Public Shared Function Convert(ByVal Image _ As System.Drawing.Image) As stdole.IPictureDisp Convert = GetIPictureFromPicture(Image) End Function End Class
sealed public class ConvertImage : System.Windows.Forms.AxHost { private ConvertImage() : base(null) { } public static stdole.IPictureDisp Convert (System.Drawing.Image image) { return (stdole.IPictureDisp)System. Windows.Forms.AxHost .GetIPictureDispFromPicture(image); } }
قم بإضافة أسلوب لتحويل ملف الأيقونة إلى ملف Image عن طريق إضافته إلى ImageList. ترسل هذه التعليمة البرمجية ملف Image إلى أسلوب ConvertImage.Convert الذي قمت بإنشائه ثم تقوم بإرجاع الملف إلى المستدعِى.
Private Function getImage() As stdole.IPictureDisp Dim tempImage As stdole.IPictureDisp = Nothing Try Dim newIcon As Icon = My.Resources.Icon1 Dim newImageList As New ImageList newImageList.Images.Add(newIcon) tempImage = ConvertImage.Convert(newImageList.Images(0)) Catch ex As Exception MsgBox(ex.Message) End Try Return tempImage End Function
private stdole.IPictureDisp getImage() { stdole.IPictureDisp tempImage = null; try { System.Drawing.Icon newIcon = Properties.Resources.Icon1; ImageList newImageList = new ImageList(); newImageList.Images.Add(newIcon); tempImage = ConvertImage.Convert(newImageList.Images[0]); } catch (Exception ex) { MessageBox.Show(ex.Message); } return tempImage; }
التحويل البرمجي للتعليمات البرمجية
يتطلب هذا المثال:
- أيقونة باسم Icon1 في موارد المشروع.
راجع أيضًا:
المهام
كيفية القيام بما يلي: إنشاء أشرطة أدوات Office
كيفية القيام بما يلي: اضافة القوائم المخصصة و عناصر القائمة إلى Outlook
كيفية القيام بما يلي: إضافة أو إزالة الموارد
كيفية القيام بما يلي: تحديد رمز التطبيق (Visual Basic ، C#)