Je veux une bibliothèque winform qui permette aux utilisateurs de fusionner plusieurs fenêtres en onglets d'une seule fenêtre, et de diviser un onglet en une nouvelle fenêtre, tout comme le Chrome de Google, et de déboguer/compiler la sortie Windows dans Visual Studio. Existe-t-il une bibliothèque ou un exemple de projet qui offre cette fonctionnalité ? Merci pour votre aide.
Réponses
Trop de publicités?Vous pouvez implémenter vos "fenêtres" en tant que contrôles d'utilisateur et placer chaque contrôle d'utilisateur sur une page d'onglet distincte sur un contrôle d'onglet. Les contrôles que contient le contrôle utilisateur lui-même n'ont pas d'importance. Il peut donc certainement contenir un contrôle d'onglet qui héberge lui-même d'autres contrôles d'utilisateur.
Pour utiliser une fenêtre dans un contrôle utilisateur, vous pouvez l'héberger dans un panneau en utilisant les méthodes WinAPI suivantes :
[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 );
Exemple :
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 );
}
Cet extrait ajoute l'application située à appToHost
comme un contrôle enfant dans le panneau panel
.
Utiliser le contrôle de tabulation
http://msdn.microsoft.com/en-us/library/system.Windows.forms.tabcontrol.tabpages.aspx
mais pour cela, vous devez convertir votre formulaire en contrôle d'utilisateur et affecter le contrôle d'utilisateur dans les onglets.
Regardez le DockPanel Suite . Il vous permettra de faire ce que vous décrivez, ainsi que des comportements de déplacement et d'arrimage si vous le souhaitez.