! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

[WinForms] 컨텍스트 메뉴 추가하기 > 온라인 스터디

본문 바로가기

11. 기타 [WinForms] 컨텍스트 메뉴 추가하기

페이지 정보

작성자 GCK써니 작성일 2022-06-24 17:10 조회 917회 댓글 0건

본문

컨텍스트 메뉴는 바로가기 메뉴라고도 불리우며, 적절한 컨텍스트 메뉴는 응용프로그램의 사용성과 업무 효율성을 높여줍니다. 


Spread.NET 에서도 사용자가 자주 사용하는 메뉴들로 구성된 컨텍스트 메뉴를 생성하여 사용할 수 있습니다.


직접 컨텍스트 메뉴를 생성하고, FpSpread의 ContextMenu 속성에 추가한 후,

FpSpread 위에서 마우스 우클릭하면, 컨텍스트 메뉴 항목들을 자동으로 보여줍니다.


아래 이미지는, Spread Designer에서 제공하는 컨텍스트 메뉴입니다.

36035e9cca327f527aab0878a2fa5ffb_1656316059_2004.png
 


본문에서는 Spread Designer에서 제공하는 컨텍스트 메뉴 일부를 응용프로그램 최종 사용자가 사용할 수 있도록 스프레드에 추가하는 방법을 살펴 보겠습니다. 



 새 프로젝트 생성 


먼저 새 프로젝트를 생성합니다.
* 본 포스팅은 Spread.NET V15 SP1을 기준으로 작성되었습니다.
* Spread.NET V15 SP1은 .NET Framework 4.6.2 이상에서 동작합니다.

36035e9cca327f527aab0878a2fa5ffb_1656290442_6533.png
36035e9cca327f527aab0878a2fa5ffb_1656290442_7374.png


 FpSpread 컴포넌트 추가 


도구상자에서 FpSpread 컴포넌트를 찾아, Form으로 가져옵니다.


36035e9cca327f527aab0878a2fa5ffb_1656290750_1395.png


 ContextMenu 객체 추가 


1. 디자인 모드에서 F7 키를 눌러, Form1.cs 파일로 이동하여 코드를 살펴 봅니다.

2. 아래 코드를 사용하여, ContextMenu 객체를 생성합니다.

ContextMenu custommenu = new ContextMenu();



 MenuItems에 항목 추가 

ContextMenu에 원하는 메뉴를 추가합니다. 
본 예제에서는 잘라내기 / 복사 / 붙여넣기 / 삽입 / 내용 지우기 / 셀 서식 메뉴를 추가하겠습니다.
custommenu.MenuItems.Add("잘라내기", new EventHandler(Context_Cut));
custommenu.MenuItems.Add("복사", new EventHandler(Context_Copy));
custommenu.MenuItems.Add("붙여넣기", new EventHandler(Context_Paste));
custommenu.MenuItems.Add("삽입", new EventHandler(Context_Insert));
custommenu.MenuItems.Add("내용 지우기", new EventHandler(Context_ClearSelectedCellsData));
custommenu.MenuItems.Add("셀 서식", new EventHandler(Context_FormatCells));
 


만일 아래 이미지와 같이 특정 메뉴 항목에 하위 메뉴를 추가하고 싶은 경우, 하기 샘플 코드와 같이 해당 메뉴 항목 인덱스에 서브 메뉴 항목을 추가하실 수 있습니다.


36035e9cca327f527aab0878a2fa5ffb_1656319766_7017.png


custommenu.MenuItems.Add("붙여넣기", new EventHandler(Context_Paste));
custommenu.MenuItems[2].MenuItems.Add("모든 셀 정보", new EventHandler(Context_PasteAll));
custommenu.MenuItems[2].MenuItems.Add("수식", new EventHandler(Context_PasteFormulas));



 (옵션) 메뉴 목록에 구분선 추가 

만일 메뉴 목록 중간에 가로로 구분선을 넣고 싶은 경우, 메뉴 아이템에 대쉬 "-"를 추가하여 메뉴와 메뉴 사이 구분선을 추가하실 수 있습니다.
custommenu.MenuItems.Add("-");



 (옵션) 메뉴 선택키 추가 


컨텍스트 메뉴가 보여졌을 때, 특정 항목을 선택하는 키를 설정할 수 있습니다.

메뉴 항목에 대한 캡션을 지정할 때, 선택키로 사용할 문자 앞에 '&' 문자를 입력합니다.


만약 아래와 같이 "잘라내기" 메뉴의 캡션을 지정할 때 'C' 앞에 '&' 문자를 붙여 쓴다고 가정합니다.

custommenu.MenuItems.Add("잘라내기(&C)", new EventHandler(Context_Cut));


그 결과, 셀을 우클릭하여 컨텍스트 메뉴가 보여진 상태에서, 키보드의 'C' 키를 누르면 "잘라내기" 메뉴가 선택됩니다.

36035e9cca327f527aab0878a2fa5ffb_1656320904_6912.png

관련 내용은 아래 링크된 MS .NET 도움말 문서에서도 확인하실 수 있습니다.



 메뉴 클릭 시 발생하는 이벤트 정의 


각 메뉴를 클릭했을 때, 발생하는 이벤트를 정의합니다. 

하기 샘플 코드는 "잘라내기" 메뉴를 선택했을 때 발생하는 이벤트를 정의한 것입니다. "잘라내기" 메뉴를 클릭하면, FpSpread의 ActionMap에 미리 정의된 ClipboardCut 동작을 현재 활성화 된 SheetView에서 수행합니다.

private void Context_Cut(object sender, EventArgs e)
{
    fpSpread1.GetActionMap().Get(FarPoint.Win.Spread.SpreadActions.ClipboardCut).PerformAction(fpSpread1.GetRootWorkbook().GetActiveWorkbook());
}



나머지 메뉴들을 선택했을 때 발생하는 이벤트도 아래와 같이 정의합니다.

private void Context_Copy(object sender, EventArgs e)
{
    fpSpread1.GetActionMap().Get(FarPoint.Win.Spread.SpreadActions.ClipboardCopy).PerformAction(fpSpread1.GetRootWorkbook().GetActiveWorkbook());
}

private void Context_Paste(object sender, EventArgs e)
{
    fpSpread1.GetActionMap().Get(FarPoint.Win.Spread.SpreadActions.ClipboardPaste).PerformAction(fpSpread1.GetRootWorkbook().GetActiveWorkbook());
}

private void Context_Insert(object sender, EventArgs e)
{
    fpSpread1.GetActionMap().Get(FarPoint.Win.Spread.SpreadActions.ClipboardInsert).PerformAction(fpSpread1.GetRootWorkbook().GetActiveWorkbook());
}

private void Context_ClearSelectedCellsData(object sender, EventArgs e)
{
    fpSpread1.GetActionMap().Get(FarPoint.Win.Spread.SpreadActions.ClearSelectedCellsData).PerformAction(fpSpread1.GetRootWorkbook().GetActiveWorkbook());
}

private void Context_FormatCells(object sender, EventArgs e)
{
    fpSpread1.GetActionMap().Get(FarPoint.Win.Spread.SpreadActions.ShowFormatCellsDialog).PerformAction(fpSpread1.GetRootWorkbook().GetActiveWorkbook());
}


이외에도 ActionMap에 정의된 SpreadActions의 필드 목록은 하기 링크된 도움말 문서에서 확인하실 수 있습니다.



 ContextMenu 속성 설정 

스프레드의 ContextMenu 속성 값으로, 앞서 설정한 custommenu를 할당합니다.
fpSpread1.ContextMenu = custommenu;
 
 

 결과 확인 

앞서 설명드린 단계에 따라 ContextMenu를 설정한 결과는 다음 영상과 같습니다.

36035e9cca327f527aab0878a2fa5ffb_1656308673_063.gif
 

본문에서 살펴본 내용과 같이 스프레드에 원하시는 컨텍스트 메뉴를 추가하여, 응용 프로그램의 사용성을 높여보시길 바랍니다.




지금 바로 Spread.NET을 다운로드하여 직접 테스트해보세요!

spnet.png

 
  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

태그1

인기글

더보기
  • 인기 게시물이 없습니다.
메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.