[英]Remove tab page from a tab control and display the page as a new Window
我正在使用WinForms開發Windows應用程序。 我有一個選項卡控件(tabMain),雙擊選項卡頁頁眉,需要將其內容移到新窗口並從tabMain中刪除該選項卡。
這是我嘗試過的代碼。
private void tabMain_MouseDoubleClick(object sender, MouseEventArgs e)
{
System.Windows.Controls.TabItem tab = (System.Windows.Controls.TabItem)sender;
var CurrentTab=tabMain.SelectedTab;
if (tabMain.TabPages.Count == 0) return;
tabMain.TabPages.Remove(tabMain.SelectedTab);
System.Windows.Window newWindow=new System.Windows.Window();
newWindow.Content = tab.Content;
newWindow.Show();
}
這樣做時,我收到錯誤消息“無法將類型為'System.Windows.Forms.TabControl'的對象轉換為類型為'System.Windows.Controls.TabItem'。” 對於該行:
System.Windows.Controls.TabItem tab = (System.Windows.Controls.TabItem)sender;
有沒有解決辦法? 還是其他可能的出路?
任何幫助,將不勝感激
提前致謝
您的代碼中有幾個問題:
您已將事件處理程序附加到TabControl,並將其強制轉換為TabItem。 因此,您將收到此錯誤。
TabItem和Window是錯誤的對象。 它們都用於WPF應用程序。 對於WinForm,您必須使用TabPage和Form
您不能設置Form.Content。 您必須單獨添加它們。
這個例子應該工作:
private void tabMain_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (tabMain.TabPages.Count > 0)
{
TabPage CurrentTab = tabMain.SelectedTab;
tabMain.TabPages.Remove(CurrentTab);
Form newWindow = new Form();
foreach (Control ctrl in CurrentTab.Controls)
{
newWindow.Controls.Add(ctrl);
}
newWindow.Show();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.