Esempio di selezione di WindowConfiguration
Questo esempio mostra come creare, fare riferimento ed eliminare più configurazioni di finestre e come selezionarle e applicarle. Verrà acquisito uno snapshot della configurazione di finestre corrente. Dopo aver eseguito WinConfigExample2a, spostare alcune finestre dell'ambiente Visual Studio ed eseguire la seconda routine, WinConfigExample2b. Verrà creata un'altra immagine snapshot della configurazione di finestre corrente, che verrà quindi confrontata con la prima. In seguito, entrambe le configurazioni di finestre verranno eliminate e l'ambiente verrà reimpostato allo stato precedente.
Per utilizzare gli esempi riportati di seguito, copiarli in un nuovo progetto di componente aggiuntivo, quindi eseguire la prima routine, WinConfigExample2a, nel metodo OnConnection del componente aggiuntivo. Per ulteriori informazioni su come eseguire gli esempi di codice come parte di un componente aggiuntivo, vedere Procedura: compilare ed eseguire gli esempi di codice del modello a oggetti di automazione.
Esempio
Sub WinConfigExample2a(ByVal dte As DTE)
Dim colWinConfig As WindowConfigurations = dte.WindowConfigurations
Dim objWinConfig As WindowConfiguration
MsgBox("Taking snapshot of current window configuration... ")
objWinConfig = colWinConfig.Add("Layout_1")
MsgBox("Created new configuration: " & _
colWinConfig.Item(colWinConfig.Count).Name)
FillMsg(colWinConfig)
End Sub
Sub WinConfigExample2b(ByVal dte As DTE)
' Before running this, alter the current window configuration.
Dim colWinConfig As WindowConfigurations = dte.WindowConfigurations
Dim objWinConfig As WindowConfiguration
Dim lCtr As Integer
' Create another new window configuration.
MsgBox("Now we'll save the new configuration...")
objWinConfig = colWinConfig.Add("Layout_2")
MsgBox("Created new configuration: " & _
colWinConfig.Item(colWinConfig.Count).Name)
FillMsg(colWinConfig)
MsgBox("Now we'll load and apply the Layout_1 configuration." & _
vbCr & "You should see the windows change back.")
colWinConfig.Item(colWinConfig.Count - 1).Apply()
MsgBox("Now we'll change back to Layout_2...")
colWinConfig.Item(colWinConfig.Count).Apply()
' Delete both new window configurations.
colWinConfig.Item(3).Apply()
For lCtr = (colWinConfig.Count - 1) To (colWinConfig.Count)
objWinConfig = colWinConfig.Item(colWinConfig.Count)
objWinConfig.Delete()
FillMsg(colWinConfig)
Next lCtr
End Sub
Sub FillMsg(ByVal colWinConfig As Object)
' Lists all currently available named window configurations.
Dim lCtr As Integer
Dim strMsg As String
For lCtr = 1 To colWinConfig.count
strMsg = strMsg & "Configuration name " & lCtr & ": " & _
colWinConfig.Item(lCtr).Name & vbCr
Next lCtr
strMsg = "Current Configurations: " & vbCr & strMsg
MsgBox(strMsg)
End Sub
void WinConfigExample2a(_DTE dte)
{
WindowConfigurations colWinConfig = dte.WindowConfigurations;
WindowConfiguration objWinConfig;
MessageBox.Show("Taking snapshot of current window
configuration... ");
objWinConfig = colWinConfig.Add("Layout_1");
MessageBox.Show("Created new configuration: " +
colWinConfig.Item(colWinConfig.Count).Name);
FillMsg(colWinConfig);
}
void WinConfigExample2b(_DTE dte)
{
// Before running this, alter the current window configuration.
WindowConfigurations colWinConfig = dte.WindowConfigurations;
WindowConfiguration objWinConfig;
int lCtr;
// Create another new window configuration.
MessageBox.Show("Now we'll save the new configuration...");
objWinConfig = colWinConfig.Add("Layout_2");
MessageBox.Show("Created new configuration: " +
colWinConfig.Item(colWinConfig.Count).Name);
FillMsg(colWinConfig);
MessageBox.Show("Now we'll load and apply the Layout_1
configuration. \n You should see the windows change back.");
colWinConfig.Item(colWinConfig.Count - 1).Apply(true);
MessageBox.Show("Now we'll change back to Layout_2...");
colWinConfig.Item(colWinConfig.Count).Apply(true);
// Delete both new window configurations.
colWinConfig.Item(3).Apply(true);
for (lCtr = (colWinConfig.Count - 1); lCtr < (colWinConfig.Count
+1); lCtr++)
{
objWinConfig = colWinConfig.Item(colWinConfig.Count);
objWinConfig.Delete();
FillMsg(colWinConfig);
}
}
void FillMsg(WindowConfigurations colWinConfig )
{
// Lists all currently available named window configurations.
int lCtr;
string strMsg = null;
for (lCtr = 1; lCtr < colWinConfig.Count + 1; lCtr ++)
{
strMsg = strMsg + "Configuration name " + lCtr + ": " + _
colWinConfig.Item(lCtr).Name + "\n";
}
strMsg = "Current Configurations: \n" + strMsg;
MessageBox.Show(strMsg);
}