Пример выбора объекта WindowConfiguration
В данном примере показано создание нескольких конфигураций окна, ссылок на них и удаление конфигураций, а также способы выделения и применения конфигураций. Будет сделан снимок текущей конфигурации окна. После выполнения WinConfigExample2a переместите некоторые окна в среде Visual Studio, а затем запустите вторую процедуру — WinConfigExample2b. Будет сделан еще один снимок текущей конфигурации окна и произведено сравнение с первым снимком. После этого обе конфигурации окна будут удалены, а среда возвращена в исходное состояние.
Чтобы использовать следующие примеры, следует скопировать их в новый проект надстройки и запустить в методе надстройки OnConnection первую процедуру WinConfigExample2a. Дополнительные сведения о запуске примеров кода как части надстройки см. в разделе Практическое руководство. Компиляция и выполнение примеров кода модели объектов автоматизации.
Пример
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);
}