다음을 통해 공유


방법: 메뉴 명령 텍스트 변경

다음 단계는 관리 코드를 사용 하 여 메뉴 명령에 텍스트 레이블을 변경 하는 방법을 설명 하는 IMenuCommandService 서비스 합니다.

절차

Imenucommandservice를 사용 하 여 메뉴 명령을 레이블을 변경 하려면

  1. 예를 들어, 명명 된 있는 VSPackage 만들기 MenuText. VSPackage 마법사가 실행 될 때를 선택 메뉴 명령 을 및 모든 기본값을 적용 합니다.

  2. .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>
    
  3. 있는 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 개체입니다.

  4. 있는 Vspackage를 초기화할 때 다음 작업을 수행 하는 코드를 추가 합니다.

    1. 메뉴 명령 서비스에 쿼리 합니다.

    2. 생성 된 OleMenuCommand 메뉴 명령을 나타내는 개체입니다.

    3. 추가 BeforeQueryStatus 이벤트 처리기입니다.

    4. 메뉴 명령을 메뉴 명령 서비스에 제공 합니다. 변경 해야 MenuCommandOleMenuCommand, 다음 예제와 같이.

    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.DesignMicrosoft.VisualStudio.Shell 네임 스페이스에 액세스 하는 IMenuCommandService 인터페이스 하는 OleMenuCommand 개체입니다.

참고 항목

기타 리소스

일반적인 작업 명령, 메뉴 및 도구 모음 사용