2011-05-31 62 views
2

我想要一個winform庫,允許用戶將多個窗口合併到單個窗口的選項卡中,並將選項卡分割到新窗口中,就像Google Chrome和Visual Studio中的調試/編譯輸出窗口一樣。有沒有提供這種功能的圖書館或樣本項目?謝謝你的幫助。是否有任何提供選項卡窗口窗體的C#庫/代碼?

回答

0

您可以將您的「窗口」作爲用戶控件實施,並將每個用戶控件放置在選項卡控件上的單獨標籤頁上。用戶控件本身包含什麼控件並不重要。所以它肯定也包含一個本身託管其他用戶控件的選項卡控件。

要使用窗口的用戶控件內則可以使用以下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

1

阿瓦隆碼頭是允許你建立的Visual Studio庫像GUI一樣。不幸的是,這不是一個贏的形式庫(wpf),但是你可以在winform控件中使用它。

http://avalondock.codeplex.com/

+0

這很好,但我不熟悉wpf。也許我以後會學習它,謝謝。 – Hazy 2011-06-02 06:33:56

0

看那DockPanel Suite。它會讓你做你所描述的,以及拖拽和停靠行爲,如果你想。

+0

謝謝,那正是我想要的 – Hazy 2011-06-02 06:29:02

相關問題