WinForm下實現子窗體

不愿透露姓名的小村村發表於2024-05-07

如果想要實現在同一個Form下的子窗體切換,下面的方法可以實現。

  1. 窗體設計,如圖

  2. 增加子窗體。滑鼠右鍵專案,選擇新增,選擇使用者控制元件

  • 注意修改使用者控制元件的大小尺寸,和GroupBox的尺寸匹配。
  1. 建立好子窗體後,在主Form裡面先宣告各個子窗體類,如下:
        //定義使用者視窗變數
        public windows1 w1;
        public windows2 w2;
        public windows3 w3;
        public windows4 w4;
  1. 在載入主Form事件時選擇例項化各個子窗體類
        //載入時賦值
        private void Form1_Load(object sender, EventArgs e)
        {
            //例項化
            w1 = new windows1();
            w2 = new windows2();    
            w3 = new windows3();    
            w4 = new windows4();
        }
  1. 為每個要顯示子窗體建立一個按鈕,目的是點選按鈕切換至子窗體
        //output_fun
        public void output_fun(string str)
        {
            textBox1.AppendText(DateTime.Now.ToString()+ ":" + str + "\r\n");
        }

       //顯示使用者視窗1
       private void button1_Click(object sender, EventArgs e)
       {
           w1.Show();
           groupBox1.Controls.Clear();
           groupBox1.Controls.Add(w1);
           output_fun("show windows1");           
       }

       //顯示使用者視窗2
       private void button2_Click(object sender, EventArgs e)
       {
           w2.Show();
           groupBox1.Controls.Clear();
           groupBox1.Controls.Add(w2);
           output_fun("show windows2");
       }

       //顯示使用者視窗3
       private void button3_Click(object sender, EventArgs e)
       {
           w3.Show();
           groupBox1.Controls.Clear();
           groupBox1.Controls.Add(w3);
           output_fun("show windows3");
       }

       //顯示使用者視窗4
       private void button4_Click(object sender, EventArgs e)
       {
           w4.Show();
           groupBox1.Controls.Clear();
           groupBox1.Controls.Add(w4);
           output_fun("show windows4");
       }
  1. 至此,一個最簡單建立子窗體的方法就完成了。
  • 如果有需要把子窗體裡面的變數值傳到主程式裡面
    • 用委託
    • 子窗體內做一個返回值(或者元組)的方法
    • 建立一個單獨的靜態類專門用來讀寫值
    • 用json或者yaml做變數管理

相關文章