是否有提供选项卡窗口表单的c#库/代码?

是否有提供选项卡窗口表单的c#库/代码?,c#,winforms,tabs,C#,Winforms,Tabs,我想要一个winform库,允许用户将多个窗口合并为单个窗口的选项卡,并将选项卡拆分为新窗口,就像VisualStudio中的Google Chrome和调试/编译输出窗口一样。有没有提供这种功能的库或示例项目?感谢您的帮助。您可以将“窗口”实现为用户控件,并将每个用户控件放置在选项卡控件上的单独选项卡页上。用户控件本身包含什么控件并不重要。因此,它肯定还包含一个选项卡控件,该控件本身承载其他用户控件 要在用户控件内使用窗口,可以使用以下WinAPI方法将其托管在面板内: [DllImport(

我想要一个winform库,允许用户将多个窗口合并为单个窗口的选项卡,并将选项卡拆分为新窗口,就像VisualStudio中的Google Chrome和调试/编译输出窗口一样。有没有提供这种功能的库或示例项目?感谢您的帮助。

您可以将“窗口”实现为用户控件,并将每个用户控件放置在选项卡控件上的单独选项卡页上。用户控件本身包含什么控件并不重要。因此,它肯定还包含一个选项卡控件,该控件本身承载其他用户控件

要在用户控件内使用窗口,可以使用以下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

使用选项卡控件中


但为此,您需要将表单转换为用户控件,并在选项卡中分配用户控件。Avalon Dock是一个库,允许您构建类似Visual Studio的GUI。不幸的是,这不是WinForms库(wpf),但是您可以将其与winform控件一起使用


看看这张照片。它可以让你做你所描述的事情,如果你想的话也可以做拖拽和停靠行为。

谢谢,这正是我想要的。这很好,但我不熟悉wpf。也许我以后会学的,谢谢。