close

放入三個button和一個panel元件

image

待會利用三個按鈕點擊去動態載入不同模組(即使用者控制元件)

image

專案加入使用者控制元件(User Control)

image

命名ucModule1.cs

image

重複上述動作,命名ucModule2.cs

image

重複上述動作,命名ucModule3.cs

image

完成後

image

點選ucModule1.cs,接著按滑鼠右鍵點選選單View Code

image

1. Line3: 加入私有靜態成員變數_instance

2. Line 4~12: 加入公開靜態屬性 Instance

   1: public partial class ucModule1 : UserControl
   2: {
   3:     private static ucModule1 _instance;
   4:     public static ucModule1 Instance
   5:     {
   6:         get
   7:         {
   8:             if(_instance==null)
   9:             {
  10:                 _instance = new ucModule1();
  11:             }
  12:             return _instance;
  13:         }
  14:     }
  15:     public ucModule1()
  16:     {
  17:         InitializeComponent();
  18:     }
  19: }

ucModule2.cs仿照ucModule1.cs步驟

   1: public partial class ucModule2 : UserControl
   2:    {
   3:        private static ucModule2 _instance;
   4:        public static ucModule2 Instance
   5:        {
   6:            get
   7:            {
   8:                if (_instance == null)
   9:                {
  10:                    _instance = new ucModule2();
  11:                }
  12:                return _instance;
  13:            }
  14:        }
  15:        public ucModule2()
  16:        {
  17:            InitializeComponent();
  18:        }
  19:    }

ucModule3.cs仿照ucModule1.cs步驟

   1: public partial class ucModule3 : UserControl
   2:     {
   3:         private static ucModule3 _instance;
   4:         public static ucModule3 Instance
   5:         {
   6:             get
   7:             {
   8:                 if (_instance == null)
   9:                 {
  10:                     _instance = new ucModule3();
  11:                 }
  12:                 return _instance;
  13:             }
  14:         }
  15:         public ucModule3()
  16:         {
  17:             InitializeComponent();
  18:         }
  19:     }

回到主Form1.cs,滑鼠點擊按鈕1事件加入下列

   1: private void btnModule1_Click(object sender, EventArgs e)
   2:        {
   3:            if(!panel1.Controls.Contains(ucModule1.Instance))
   4:            {
   5:                panel1.Controls.Add(ucModule1.Instance);
   6:                ucModule1.Instance.Dock = DockStyle.Fill;
   7:                ucModule1.Instance.BringToFront();
   8:            }else
   9:            {
  10:                ucModule1.Instance.BringToFront();
  11:            }
  12:        }

按鈕2滑鼠點擊事件類似按鈕1

   1: private void btnModule2_Click(object sender, EventArgs e)
   2:        {
   3:            if (!panel1.Controls.Contains(ucModule2.Instance))
   4:            {
   5:                panel1.Controls.Add(ucModule2.Instance);
   6:                ucModule2.Instance.Dock = DockStyle.Fill;
   7:                ucModule2.Instance.BringToFront();
   8:            }
   9:            else
  10:            {
  11:                ucModule2.Instance.BringToFront();
  12:            }
  13:  
  14:        }

按鈕3滑鼠點擊事件類似按鈕1

   1: private void btnModule3_Click(object sender, EventArgs e)
   2:        {
   3:            if (!panel1.Controls.Contains(ucModule3.Instance))
   4:            {
   5:                panel1.Controls.Add(ucModule1.Instance);
   6:                ucModule2.Instance.Dock = DockStyle.Fill;
   7:                ucModule3.Instance.BringToFront();
   8:            }
   9:            else
  10:            {
  11:                ucModule3.Instance.BringToFront();
  12:            }
  13:  
  14:        }

ucModule1 加入textBox1和timer1

image

程式碼加入

   1:  
   2:         private void ucModule1_Load(object sender, EventArgs e)
   3:         {
   4:             timer1.Enabled = true;
   5:         }
   6:  
   7:         private void timer1_Tick(object sender, EventArgs e)
   8:         {
   9:             this.textBox1.Text = string.Format("{0}", DateTime.Now.ToLongTimeString());
  10:         }

ucModule2 加入comboBox

image

ucModule2 中ComboBox1的內容

image

ucModule3 加入dateTimePicker

image

測試Module1按鈕

image

測試Module2按鈕

image

測試Module3按鈕

image

 

參考資料

1. C# Tutorial - Dynamically Loading User Control

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 me1237guy 的頭像
    me1237guy

    天天向上

    me1237guy 發表在 痞客邦 留言(0) 人氣()