簡體   English   中英

從選項卡控件中刪除選項卡頁,並將頁面顯示為新窗口

[英]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;

有沒有解決辦法? 還是其他可能的出路?

任何幫助,將不勝感激

提前致謝

您的代碼中有幾個問題:

  1. 您已將事件處理程序附加到TabControl,並將其強制轉換為TabItem。 因此,您將收到此錯誤。

  2. TabItem和Window是錯誤的對象。 它們都用於WPF應用程序。 對於WinForm,您必須使用TabPage和Form

  3. 您不能設置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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM