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);
}

请参见

参考

WindowConfiguration

WindowConfigurations