天天看點

C#主窗體調用子窗體總結

首先在同一命名空間下添加建立多個窗體,選用一個作為主窗體,其他窗體作為子窗體。

經導師指導,我采用在主窗體加入一個面闆,面闆中調用三個主窗體的方法,經實踐記錄如下:

C#主窗體調用子窗體總結

步驟1:建立項目

主窗體我采用的DevExpress配件,當然直接建立普通的winform窗體也可以

C#主窗體調用子窗體總結

步驟2:在同一個命名空間下添加多個窗體作為子窗體

C#主窗體調用子窗體總結
C#主窗體調用子窗體總結

依次添加完成後,分别将窗體的(Name)屬性修改為特定的名稱(最好展現出該子窗體的功能,友善之後寫程式)

步驟3:在主窗體中定義一個panel控件,用作子窗體的父容器

C#主窗體調用子窗體總結

步驟4:在主窗體中定義三個子窗體

DigtalHandWritingForm sonForm1 = new DigtalHandWritingForm();
picture_load sonForm2 = new picture_load();
train_model sonForm3 = new train_model();
           

定義子窗體的父容器為panel1

sonForm1.Parent = this.panel1;
sonForm1.Size = this.panel1.Size;
sonForm2.Parent = this.panel1;
sonForm2.Size = this.panel1.Size;
sonForm3.Parent = this.panel1;
sonForm3.Size = this.panel1.Size;
           

對子窗體的一些其他操作:

//将目前子窗體設定成非頂級控件
sonForm1.TopLevel = false;
sonForm2.TopLevel = false;
sonForm3.TopLevel = false;
//設定窗體最大化
sonForm1.WindowState = FormWindowState.Maximized;
sonForm2.WindowState = FormWindowState.Maximized;
sonForm3.WindowState = FormWindowState.Maximized;
//去掉窗體邊框
sonForm1.FormBorderStyle = FormBorderStyle.None;
sonForm2.FormBorderStyle = FormBorderStyle.None;
sonForm3.FormBorderStyle = FormBorderStyle.None;
           

步驟5:初始化子窗體的狀态,讓子窗體全部顯示,并設定可見性為隐藏

//初始子窗體全部隐藏
sonForm2.Visible = false;
sonForm3.Visible = false;
sonForm3.Visible = false;
//子窗體全部顯示
sonForm1.Show();
sonForm2.Show();
sonForm3.Show();
           

關于窗體隐藏也可參考如下連結

窗體隐藏:窗體隐藏

步驟6:定義三個按鈕,通過按鈕的點選事件來實作窗體的切換,這時候窗體的Visible屬性顯得就很重要了

private void barButtonItem15_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
	sonForm2.Visible = false;
	sonForm3.Visible = false;
	sonForm1.Visible = true;
}
private void barButtonItem17_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
	sonForm1.Visible = false;
	sonForm3.Visible = false;
	sonForm2.Visible = true;
}

private void barButtonItem5_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
	sonForm1.Visible = false;
	sonForm2.Visible = false;
	sonForm3.Visible = true;
}
           

示範一下程式效果:

c#主窗體添加子窗體示範

c#