是否有提供标签窗口形式的c#库/代码?

时间:2011-05-31 13:24:47

标签: c# winforms tabs

我想要一个winform库,允许用户将多个窗口合并到一个窗口的选项卡中,并将选项卡拆分到新窗口,就像在Visual Studio中使用Google Chrome和调试/编译输出窗口一样。是否有提供此类功能的库或示例项目?谢谢你的帮助。

4 个答案:

答案 0 :(得分:1)

Avalon Dock是一个允许您像GUI一样构建Visual Studio的库。不幸的是,这不是一个win表单库(wpf),但你可以将它与winform控件一起使用。

http://avalondock.codeplex.com/

答案 1 :(得分:0)

您可以将“windows”实现为用户控件,并将每个用户控件放在选项卡控件上的单独选项卡页面上。用户控件本身包含哪些控件并不重要。因此,它肯定还可以包含一个标签控件,它本身托管其他用户控件。

要在用户控件中使用窗口,可以使用以下WinAPI方法将其托管在面板中:

[DllImport( "user32.dll" )]
public static extern bool ShowWindow( IntPtr hWnd, WindowShowStyle nCmdShow );

[DllImport( "user32.dll", SetLastError = true )]
public static extern IntPtr SetParent( IntPtr hWndChild, IntPtr hWndNewParent );

示例:

System.Diagnostics.Process externalProcess = new System.Diagnostics.Process( )
{
    StartInfo = new System.Diagnostics.ProcessStartInfo( appToHost )
};
externalProcess.Start( );
externalProcess.WaitForInputIdle( );
if ( !externalProcess.HasExited )
{
    ShowWindow( externalProcess.MainWindowHandle, ShowWindowStyle.Maximize );
    SetParent( externalProcess.MainWindowHandle, panel.Handle );
}

此代码段将位于appToHost的应用程序作为子控件添加到面板panel中。

答案 2 :(得分:0)

使用标签控件

http://msdn.microsoft.com/en-us/library/system.windows.forms.tabcontrol.tabpages.aspx

但为此您需要将表单转换为用户控件并在选项卡中分配用户控件

答案 3 :(得分:0)

查看DockPanel Suite。它可以让你做你描述的,以及拖动和对接行为,如果你想。