C#之如何實現(xiàn)多個子窗體切換效果
C#實現(xiàn)多個子窗體切換效果
C#的在主窗體中實現(xiàn)多個子窗體相互切換的效果主要依托于panel容器和Controls函數(shù)。
和大家分享一下在C#的winform開發(fā)中如何實現(xiàn)借助一個主窗體來實現(xiàn)內部多個子窗體的切換效果。
先來看一下主窗體中多個小窗體切換的效果
多窗體切換的原理
多窗體切換的原理其實是借助一個panel容器,在該容器中顯示相同大小的窗口
建立多窗口切換的步驟
1.新建一個主窗體并在其中放置適當?shù)目丶?/h3>
包括進行切換的按鈕和顯示窗體的panel容器,在這里要注意:將要顯示的子窗體就是在該panel容器中顯示的,
效果如下:
2.新建用于在主窗體中顯示的子窗體
子窗體的新建其實是一個用戶控件(Windows窗體),在這里我們可以在狀態(tài)欄中右擊選擇—>添加—>用戶控件(Windows窗體)
3.設置子窗體的尺寸和panel容器的尺寸相等
目的是為了在panel容器中顯示時不會溢出。
在這里我們?yōu)榱吮阌趨^(qū)分三個不同的子窗體,設置窗體的不同顏色,并在窗體中進行提示。
4.以同樣的方式建立子窗體二和子窗體三
窗體三
5.在主窗體的代碼中定義相應的三個窗口變量
public UserControl1 f1; //創(chuàng)建用戶控件一變量 public UserControl2 f2; //創(chuàng)建用戶控件二變量 public UserControl3 f3; //創(chuàng)建用戶控件三變量
6.在Form1_Load函數(shù)中對三個變量進行賦值
也就是對三個對象進行實例化
private void Form1_Load(object sender, EventArgs e) { f1 = new UserControl1(); //實例化f1 f2 = new UserControl2(); //實例化f2 f3 = new UserControl3(); //實例化f3 }
7.由于我們的窗體切換是點擊相應的按鈕觸發(fā)的
所以我們要為相應的按鈕控件設置觸發(fā)事件。
雙擊主窗體中的按鈕進入相應的觸發(fā)函數(shù),在這里我們要使用如下的代碼對相應的子窗體進行顯示:
//顯示窗體一 private void button1_Click(object sender, EventArgs e) { f1.Show(); //將窗體一進行顯示 panel2.Controls.Clear(); //清空原容器上的控件 panel2.Controls.Add(f1); //將窗體一加入容器panel2 } //顯示窗體二 private void button2_Click(object sender, EventArgs e) { f2.Show(); //將窗體二進行顯示 panel2.Controls.Clear(); //清空原容器上的控件 panel2.Controls.Add(f2); //將窗體二加入容器panel2 } //顯示窗體三 private void button3_Click(object sender, EventArgs e) { f3.Show(); //將窗體三進行顯示 panel2.Controls.Clear(); //清空原容器上的控件 panel2.Controls.Add(f3); //將窗體三加入容器panel2 }
8.完成之后運行窗口
點擊相應的按鈕,在panel2容器中就可以呈現(xiàn)出相應的界面。
最后附上完整源碼
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace window_cut { public partial class Form1 : Form { public UserControl1 f1; //創(chuàng)建用戶控件一變量 public UserControl2 f2; //創(chuàng)建用戶控件二變量 public UserControl3 f3; //創(chuàng)建用戶控件三變量 public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { f1 = new UserControl1(); //實例化f1 f2 = new UserControl2(); //實例化f2 f3 = new UserControl3(); //實例化f3 } //顯示窗體一 private void button1_Click(object sender, EventArgs e) { f1.Show(); //將窗體一進行顯示 panel2.Controls.Clear(); //清空原容器上的控件 panel2.Controls.Add(f1); //將窗體一加入容器panel2 } //顯示窗體二 private void button2_Click(object sender, EventArgs e) { f2.Show(); //將窗體二進行顯示 panel2.Controls.Clear(); //清空原容器上的控件 panel2.Controls.Add(f2); //將窗體二加入容器panel2 } //顯示窗體三 private void button3_Click(object sender, EventArgs e) { f3.Show(); //將窗體三進行顯示 panel2.Controls.Clear(); //清空原容器上的控件 panel2.Controls.Add(f3); //將窗體三加入容器panel2 } } }
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
C#刪除只讀文件或文件夾(解決File.Delete無法刪除文件)
這篇文章主要介紹了C#刪除只讀文件或文件夾(解決File.Delete無法刪除文件),需要的朋友可以參考下2015-09-09mvc C# JavaScript LigerUI oracle實現(xiàn)用戶的注冊、登陸驗證、登陸
這篇文章主要介紹了mvc C# JavaScript LigerUI oracle實現(xiàn)用戶的注冊、登陸驗證、登陸的相關資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-04-04