Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Você pode programar uma janela de ferramenta para que várias instâncias dela possam ser abertas simultaneamente. Por padrão, as janelas de ferramentas podem ter apenas uma instância aberta.
Ao usar uma janela de ferramenta de várias instâncias, você pode mostrar várias fontes de informações relacionadas ao mesmo tempo. Por exemplo, você pode colocar um controle de várias linhas TextBox em uma janela de ferramenta de várias instâncias para que vários trechos de código estejam disponíveis simultaneamente durante uma sessão de programação. Além disso, por exemplo, você pode colocar um DataGrid controle e uma caixa de listagem suspensa em uma janela de ferramenta de várias instâncias para que várias fontes de dados em tempo real possam ser rastreadas simultaneamente.
Criar uma janela de ferramenta básica (instância única)
Crie um projeto chamado MultiInstanceToolWindow usando o modelo VSIX e adicione um modelo de item de janela de ferramenta personalizado chamado MIToolWindow.
Observação
Para obter mais informações sobre como criar uma extensão com uma janela de ferramenta, consulte Criar uma extensão com uma janela de ferramenta.
Criar uma janela de ferramenta em várias instâncias
Abra o arquivo MIToolWindowPackage.cs e localize o
ProvideToolWindowatributo. e oMultiInstances=trueparâmetro, conforme mostrado no exemplo a seguir:[PackageRegistration(UseManagedResourcesOnly = true)] [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] // Info on this package for Help/About [ProvideMenuResource("Menus.ctmenu", 1)] [ProvideToolWindow(typeof(MultiInstanceToolWindow.MIToolWindow), MultiInstances = true)] [Guid(MIToolWindowPackage.PackageGuidString)] public sealed class MIToolWindowPackage : Package {. . .}No arquivo MIToolWindowCommand.cs localize, localize o
ShowToolWindos()método. Nesse método, chame o método e defina seucreatesinalizador parafalseque ele itere FindToolWindow pelas instâncias existentes da janela de ferramenta até que um disponívelidseja encontrado.Para criar uma instância de janela de ferramenta, chame o método e defina-o FindToolWindow
idcomo um valor disponível e seucreatesinalizador comotrue.Por padrão, o valor do parâmetro do
idFindToolWindow método é0. Esse valor cria uma janela de ferramenta de instância única. Para que mais de uma instância seja hospedada, cada instância deve ter seu próprioidarquivo exclusivo .Chame o Show IVsWindowFrame método no objeto retornado pela Frame propriedade da instância da janela de ferramenta.
Por padrão, o
ShowToolWindowmétodo criado pelo modelo de item de janela de ferramenta cria uma janela de ferramenta de instância única. O exemplo a seguir mostra como modificar oShowToolWindowmétodo para criar várias instâncias.private void ShowToolWindow(object sender, EventArgs e) { for (int i = 0; i < 10; i++) { ToolWindowPane window = this.package.FindToolWindow(typeof(MIToolWindow), i, false); if (window == null) { // Create the window with the first free ID. window = (ToolWindowPane)this.package.FindToolWindow(typeof(MIToolWindow), i, true); if ((null == window) || (null == window.Frame)) { throw new NotSupportedException("Cannot create tool window"); } IVsWindowFrame windowFrame = (IVsWindowFrame)window.Frame; Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(windowFrame.Show()); break; } } }