User Tools

Site Tools


Action disabled: source
prog:csharp:20250313-002:index

C# form2 如何 docking 到 form1 的一個 tabPage 但是可 floating (2025-03-13)

  • 要在 C# WinForms 中將 Form2 停靠到 Form1 的一個 TabPage 中,但同時又能夠浮動,你可以使用 DockPanel 或 ToolStripContainer 來達成這個效果。以下是具體的步驟和範例代碼:

步驟

  • 創建 Form1 和 Form2:
    • 在 Form1 中添加一個 TabControl,並在其中添加一個或多個 TabPage。
    • 創建 Form2,這將是你希望停靠的窗口。
  • 使用 DockPanel:
    • 使用 DockPanel 控制項來實現停靠和浮動的功能。

範例代碼

  • 在 Form1 中,你可以這樣寫:
  • using System;
    using System.Windows.Forms;
    
    public class Form1 : Form
    {
        private TabControl tabControl;
    
        public Form1()
        {
            tabControl = new TabControl();
            tabControl.Dock = DockStyle.Fill;
    
            TabPage tabPage = new TabPage("Tab 1");
            tabControl.TabPages.Add(tabPage);
            this.Controls.Add(tabControl);
    
            Button button = new Button { Text = "Open Form2" };
            button.Click += (s, e) => OpenForm2();
            tabPage.Controls.Add(button);
        }
    
        private void OpenForm2()
        {
            Form2 form2 = new Form2();
            form2.TopLevel = false; // 使 Form2 成為一個子控制項
            form2.FormBorderStyle = FormBorderStyle.FixedToolWindow; // 設定邊框樣式
            form2.Dock = DockStyle.Fill; // 停靠到 TabPage
            tabControl.SelectedTab.Controls.Add(form2);
            form2.Show();
        }
    
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.Run(new Form1());
        }
    }
  • 在 Form2 中,您可以這樣設置:
    • using System.Windows.Forms;
      
      public class Form2 : Form
      {
          public Form2()
          {
              this.Text = "Form2";
              this.Size = new System.Drawing.Size(300, 200);
          }
      }

注意事項

  • 浮動功能: 如果需要讓 Form2 可以浮動,則需要考慮使用 DockPanel 控制項,這樣更容易管理停靠和浮動的狀態。
  • 事件處理: 你可能需要處理一些事件,以便在停靠和浮動之間切換。

進一步的改進

  • 如果你希望 Form2 能夠在浮動狀態下工作,你可以考慮使用第三方庫如 DockPanel Suite,這樣可以更方便地實現複雜的停靠和浮動功能。
  • c# form2 如何 docking 到 form1 的一個 tabPage 但是可 floating,而這floating form 要可以獨立於 form 1,拖拉到tabPage又可docking到該 tabPage 中
  • Monica
    • 要在 C# WinForms 中實現 Form2 可以停靠到 Form1 的 TabPage 中,並且同時具備浮動的能力,你可以使用 DockPanel Suite 這個第三方庫來簡化這個過程。這樣可以讓你更方便地實現停靠和浮動功能。

步驟

  • 1, 安裝 DockPanel Suite:
    • 你可以通過 NuGet 安裝 DockPanel Suite。在 Visual Studio 的 NuGet 包管理器中搜索 DockPanel Suite 並安裝。
  • 2, 創建 Form1 和 Form2:
    • 在 Form1 中添加一個 TabControl,並在其中添加一個或多個 TabPage。
    • 創建 Form2,這將是你希望停靠的窗口。

範例代碼

  • 以下是如何使用 DockPanel Suite 的示範代碼:
  • Form1
    using System;
    using System.Windows.Forms;
    using WeifenLuo.WinFormsUI.Docking;
    
    public class Form1 : Form
    {
        private DockPanel dockPanel;
        private TabControl tabControl;
    
        public Form1()
        {
            dockPanel = new DockPanel();
            dockPanel.Dock = DockStyle.Fill;
            this.Controls.Add(dockPanel);
    
            tabControl = new TabControl();
            tabControl.Dock = DockStyle.Top;
            tabControl.Height = 100;
            this.Controls.Add(tabControl);
    
            TabPage tabPage = new TabPage("Tab 1");
            tabControl.TabPages.Add(tabPage);
    
            Button button = new Button { Text = "Open Form2" };
            button.Click += (s, e) => OpenForm2();
            tabPage.Controls.Add(button);
        }
    
        private void OpenForm2()
        {
            Form2 form2 = new Form2();
            form2.Show(dockPanel); // 使用 DockPanel 顯示 Form2
        }
    
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.Run(new Form1());
        }
    }
  • Form2
    using System;
    using System.Windows.Forms;
    using WeifenLuo.WinFormsUI.Docking;
    
    public class Form2 : DockContent
    {
        public Form2()
        {
            this.Text = "Form2";
            this.Size = new System.Drawing.Size(300, 200);
        }
    }

注意事項

  • 浮動功能: 使用 DockContent 類別來創建 Form2,這樣它可以在 DockPanel 中浮動。
  • 拖拉和停靠: 當你拖拉 Form2 時,它會自動進行浮動,並且可以被拖回到 TabPage 中進行停靠。
  • 樣式和功能: DockPanel Suite 提供了許多自定義選項,可以讓你調整停靠面板的外觀和行為。

總結

  • 使用 DockPanel Suite 可以輕鬆實現你的需求,讓 Form2 在 Form1 的 TabPage 中停靠或浮動。這樣的設計不僅提高了靈活性,還使得用戶界面更加友好。
  • 2 person(s) visited this page until now.

prog/csharp/20250313-002/index.txt · Last modified: 2025/03/13 15:57 (external edit)