Существует ли библиотека / код c #, которые предоставляют форму окна вкладки? - PullRequest
2 голосов
/ 31 мая 2011

Мне нужна библиотека winform, которая позволяет пользователям объединять несколько окон с вкладками одного окна и разбивать вкладку на новое окно, точно так же, как окна Google Chrome и окна отладки / компиляции в Visual Studio.Есть ли библиотека или пример проекта, который предоставляет такую ​​функцию?Спасибо за вашу помощь.

Ответы [ 4 ]

1 голос
/ 31 мая 2011

Avalon Dock - это библиотека, которая позволяет вам создавать Visual Studio как GUI. К сожалению, это не библиотека форм win (wpf), однако вы можете использовать ее с элементами управления winform.

http://avalondock.codeplex.com/

0 голосов
/ 31 мая 2011

Посмотрите на DockPanel Suite .Это позволит вам делать то, что вы описываете, а также перетаскивать и закреплять поведение, если хотите.

0 голосов
/ 31 мая 2011

Используйте элемент управления вкладками

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

, но для этого вам необходимо преобразовать форму в пользовательский элемент управления и назначить элемент управления в виде вкладок

0 голосов
/ 31 мая 2011

Вы можете реализовать свои «окна» в качестве пользовательских элементов управления и разместить каждый пользовательский элемент управления на отдельной вкладке на вкладке.Не имеет значения, что контролирует сам пользовательский элемент управления.Поэтому он наверняка может также содержать элемент управления с вкладками, на котором размещены другие пользовательские элементы управления.

Чтобы использовать окно внутри пользовательского элемента управления, его можно разместить на панели с помощью следующих методов 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...