방법: 메뉴 명령 텍스트 변경
다음 단계는 관리 코드를 사용 하 여 메뉴 명령에 텍스트 레이블을 변경 하는 방법을 설명 하는 IMenuCommandService 서비스 합니다.
절차
Imenucommandservice를 사용 하 여 메뉴 명령을 레이블을 변경 하려면
예를 들어, 명명 된 있는 VSPackage 만들기 MenuText. VSPackage 마법사가 실행 될 때를 선택 메뉴 명령 을 및 모든 기본값을 적용 합니다.
.Vstc 파일의 추가 TextChanges 사용자 메뉴 명령에는 다음 예제에 표시 된 플래그입니다.
<Button guid="guidMenuTextCmdSet" id="cmdidMyCommand" priority="0x0100" type="Button"> <Parent guid="guidMenuTextCmdSet" id="MyMenuGroup" /> <Icon guid="guidImages" id="bmpPic1" /> <CommandFlag>TextChanges</CommandFlag> <Strings> <CommandName>cmdidMyCommand</CommandName> <ButtonText>My Command name</ButtonText> </Strings> </Button>
있는 Vspackage에 메뉴 명령이 표시 되기 전에 호출 되는 이벤트 처리기를 만듭니다.
Private Sub OnBeforeQueryStatus(ByVal sender As Object, ByVal e As EventArgs) Dim myCommand As OleMenuCommand = TryCast(sender, OleMenuCommand) If myCommand IsNot Nothing Then myCommand.Text = "New Text" End If End Sub
private void OnBeforeQueryStatus(object sender, EventArgs e) { var myCommand = sender as OleMenuCommand; if (null != myCommand) { myCommand.Text = "New Text"; } }
변경 하 여이 메서드를 메뉴 명령의 상태를 업데이트할 수 있습니다의 Visible, Checked, 및 Enabled 속성에는 OleMenuCommand 개체입니다.
있는 Vspackage를 초기화할 때 다음 작업을 수행 하는 코드를 추가 합니다.
메뉴 명령 서비스에 쿼리 합니다.
생성 된 OleMenuCommand 메뉴 명령을 나타내는 개체입니다.
추가 BeforeQueryStatus 이벤트 처리기입니다.
메뉴 명령을 메뉴 명령 서비스에 제공 합니다. 변경 해야 MenuCommand 에 OleMenuCommand, 다음 예제와 같이.
Dim menuCommandID As CommandID = New CommandID(GuidList.guidMenuTextCmdSet, CInt(PkgCmdIDList.cmdidMyTextCommand)) Dim menuItem As OleMenuCommand = New OleMenuCommand(New EventHandler(AddressOf MenuItemCallback), menuCommandID) AddHandler menuItem.BeforeQueryStatus, AddressOf OnBeforeQueryStatus mcs.AddCommand(menuItem)
// Create the command for the menu item. CommandID menuCommandID = new CommandID(GuidList.guidMenuTextCmdSet, (int)PkgCmdIDList.cmdidMyCommand); OleMenuCommand menuItem = new OleMenuCommand(MenuItemCallback, menuCommandID ); menuItem.BeforeQueryStatus += new EventHandler(OnBeforeQueryStatus); mcs.AddCommand(menuItem);
메뉴 명령을 만들려면 패키지 템플릿을 사용 하면 필요한 코드가 자동으로 추가 됩니다. 그러나 메뉴 명령으로 선언 된 MenuCommand 개체 및 해당 추가 하지 않습니다는 BeforeQueryStatus 처리기. 따라서 사용 하는 메뉴 명령을 선언 변경 해야 OleMenuCommand 하 고 다음 줄에서 처리기를 추가 합니다.
패키지 파일을 포함 해야는 System.ComponentModel.Design 및 Microsoft.VisualStudio.Shell 네임 스페이스에 액세스 하는 IMenuCommandService 인터페이스 하는 OleMenuCommand 개체입니다.