728x90
반응형
728x170
▶ RibbonContextMenu.xml
<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="customUI_Load">
<ribbon>
</ribbon>
<contextMenus>
<contextMenu idMso="ContextMenuFolder">
<button id="customContextMenu1"
label="커스텀 컨텍스트 메뉴 1"
onAction="customContextMenu1_Click" />
</contextMenu>
</contextMenus>
</customUI>
728x90
▶ RibbonContextMenu.cs
using Microsoft.Office.Core;
using System;
using System.IO;
using System.Reflection;
using System.Runtime.InteropServices;
namespace TestProject
{
/// <summary>
/// 리본 컨텍스트 메뉴
/// </summary>
[ComVisible(true)]
public class RibbonContextMenu : IRibbonExtensibility
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 리본 UI
/// </summary>
private IRibbonUI ribbonUI;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - RibbonContextMenu()
/// <summary>
/// 생성자
/// </summary>
public RibbonContextMenu()
{
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Public
#region (IRibbonExtensibility) 커스텀 UI 구하기 - GetCustomUI(ribbonID)
/// <summary>
/// 커스텀 UI 구하기
/// </summary>
/// <param name="ribbonID">리본 ID</param>
/// <returns>커스텀 UI</returns>
public string GetCustomUI(string ribbonID)
{
return GetResourceText("TestProject.RibbonContextMenu.xml");
}
#endregion
#region 커스텀 UI 로드시 처리하기 - customUI_Load(ribbonUI)
/// <summary>
/// 커스텀 UI 로드시 처리하기
/// </summary>
/// <param name="ribbonUI">리본 UI 인터페이스 객체</param>
public void customUI_Load(IRibbonUI ribbonUI)
{
this.ribbonUI = ribbonUI;
}
#endregion
#region 커스텀 컨텍스트 메뉴 1 클릭시 처리하기 - customContextMenu1_Click(ribbonControl)
/// <summary>
/// 커스텀 컨텍스트 메뉴 1 클릭시 처리하기
/// </summary>
/// <param name="ribbonControl">리본 컨트롤</param>
public void customContextMenu1_Click(IRibbonControl ribbonControl)
{
if(ribbonControl.Id == "customContextMenu1")
{
System.Windows.Forms.MessageBox.Show("커스텀 컨텍스트 메뉴 1을 클릭했습니다.");
}
}
#endregion
////////////////////////////////////////////////////////////////////////////////////////// Private
#region 리소스 텍스트 구하기 - GetResourceText(resourceName)
/// <summary>
/// 리소스 텍스트 구하기
/// </summary>
/// <param name="resourceName">리소스명</param>
/// <returns>리소스 텍스트</returns>
private static string GetResourceText(string resourceName)
{
Assembly assembly = Assembly.GetExecutingAssembly();
string[] resourceNameArray = assembly.GetManifestResourceNames();
for(int i = 0; i < resourceNameArray.Length; ++i)
{
if(string.Compare(resourceName, resourceNameArray[i], StringComparison.OrdinalIgnoreCase) == 0)
{
using(StreamReader resourceReader = new StreamReader(assembly.GetManifestResourceStream(resourceNameArray[i])))
{
if(resourceReader != null)
{
return resourceReader.ReadToEnd();
}
}
}
}
return null;
}
#endregion
}
}
300x250
▶ CustomAddIn.cs
using Microsoft.Office.Core;
using System;
namespace TestProject
{
/// <summary>
/// 커스텀 애드인
/// </summary>
public partial class CustomAddIn
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Protected
//////////////////////////////////////////////////////////////////////////////// Function
#region 리본 확장성 객체 생성하기 - CreateRibbonExtensibilityObject()
/// <summary>
/// 리본 확장성 객체 생성하기
/// </summary>
/// <returns>리본 확장성 인터페이스 객체</returns>
protected override IRibbonExtensibility CreateRibbonExtensibilityObject()
{
return new RibbonContextMenu();
}
#endregion
////////////////////////////////////////////////////////////////////////////////////////// Private
//////////////////////////////////////////////////////////////////////////////// Event
#region 커스텀 애드인 시작시 처리하기 - CustomAddIn_Startup(sender, e)
/// <summary>
/// 커스텀 애드인 시작시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void CustomAddIn_Startup(object sender, EventArgs e)
{
}
#endregion
#region 커스텀 애드인 셧다운시 처리하기 - CustomAddIn_Shutdown(sender, e)
/// <summary>
/// 커스텀 애드인 셧다운시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void CustomAddIn_Shutdown(object sender, EventArgs e)
{
}
#endregion
//////////////////////////////////////////////////////////////////////////////// Function
#region VSTO에서 생성한 코드
/// <summary>
/// 디자이너 지원에 필요한 메서드입니다.
/// 이 메서드의 내용을 코드 편집기로 수정하지 마세요.
/// </summary>
private void InternalStartup()
{
this.Startup += new System.EventHandler(CustomAddIn_Startup );
this.Shutdown += new System.EventHandler(CustomAddIn_Shutdown);
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
'C# > Outlook' 카테고리의 다른 글
[C#/OUTLOOK] ExplorerEvents_10_Event 인터페이스 : FolderSwitch 이벤트 사용하기 (0) | 2021.07.15 |
---|---|
[C#/OUTLOOK] Explorer 인터페이스 : Selection 속성 사용하기 (0) | 2021.07.08 |
[C#/OUTLOOK] Explorer 인터페이스 : Selection 속성을 사용해 선택 메일 항목 열거 가능형 구하기 (0) | 2021.07.08 |
[C#/OUTLOOK] 메일 컨텍스트 메뉴에서 커스텀 컨텍스트 메뉴 추가하기 (0) | 2021.07.05 |
[C#/OUTLOOK] 폴더 컨텍스트 메뉴에서 커스텀 컨텍스트 메뉴 추가하기 (기능 개선) (0) | 2021.07.05 |
[C#/OUTLOOK] MAPIFolder 인터페이스 : 폴더 아이콘 설정하기 (0) | 2021.07.02 |
[C#/OUTLOOK] MailItem 인터페이스 : 메일 아이콘 설정하기 (0) | 2021.07.02 |
[C#/OUTLOOK] 신규 메일 수신시 지정 폴더로 이동시키기 (0) | 2021.06.24 |
[C#/OUTLOOK] ExplorerEvents_10_Event 인터페이스 : FolderSwitch/SelectionChange 이벤트 사용하기 (0) | 2021.06.24 |
[C#/OUTLOOK] COMAddIn 인터페이스 : Connect 속성을 사용해 애드인 언로드시키기 (0) | 2021.06.24 |
댓글을 달아 주세요