Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Depois de implementar um comando, você pode adicionar código para atualizar a interface do usuário com o estado dos novos comandos.
Em um aplicativo Win32 típico, o conjunto de comandos pode ser sondado continuamente e o estado dos comandos individuais pode ser ajustado conforme o usuário os visualiza. No entanto, como o shell do Visual Studio pode hospedar um número ilimitado de VSPackages, a sondagem abrangente pode diminuir a capacidade de resposta, especialmente a sondagem entre assemblies de interoperabilidade entre código gerenciado e COM.
Para atualizar a interface do usuário
Execute uma das seguintes etapas:
Chame o método UpdateCommandUI .
Uma IVsUIShell interface pode ser obtida do SVsUIShell serviço, da seguinte maneira.
void UpdateUI(Microsoft.VisualStudio.Shell.ServiceProvider sp) { IVsUIShell vsShell = (IVsUIShell)sp.GetService(typeof(IVsUIShell)); if (vsShell != null) { int hr = vsShell.UpdateCommandUI(0); Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(hr); } }Se o parâmetro for diferente de UpdateCommandUI zero (
TRUE), a atualização será executada de forma síncrona e imediata. Recomendamos que você passe zero (FALSE) para esse parâmetro para ajudar a manter um bom desempenho. Se você quiser evitar o cache, aplique oDontCachesinalizador ao criar o comando no arquivo .vsct. No entanto, use o sinalizador com cuidado ou o desempenho pode diminuir. Para obter mais informações sobre sinalizadores de comando, consulte a documentação do Elemento de Sinalizador de Comando .Nos VSPackages que hospedam um controle ActiveX usando o modelo de ativação in-place em uma janela, pode ser mais conveniente usar o método UpdateUI. O UpdateCommandUI método na IVsUIShell interface e o UpdateUI método na IOleInPlaceComponentUIManager interface são funcionalmente equivalentes. Ambos fazem com que o ambiente consulte novamente o estado de todos os comandos. Normalmente, uma atualização não é executada imediatamente. Em vez disso, uma atualização é atrasada até um momento de inatividade. O shell armazena em cache o estado de comando para ajudar a manter um bom desempenho. Se você quiser evitar o cache, aplique o
DontCachesinalizador ao criar o comando no arquivo .vsct. No entanto, use o sinalizador com cuidado porque o desempenho pode diminuir.Observe que você pode obter a interface IOleInPlaceComponentUIManager chamando o método
QueryInterfaceem um objeto IOleComponentUIManager ou obtendo a interface do serviço SOleComponentUIManager.