?? 孤立的窗體.txt
字號:
窗體FormPres默認(rèn)的情況下,MinimizeBox=true,即最小化按鈕.
代面的代碼會(huì)產(chǎn)生孤立的窗體,從而失去控制。
//修改前
FormPres frm=new FormPres();
frm.Show();
解決問題的方法有兩種:
1)將MinimizeBox=flase,即關(guān)閉按鈕.
2)保存它的引用,當(dāng)隱藏后可以再顯示或關(guān)閉它。
新建一個(gè)文件Global.cs
using System;
namespace SC_Weather
{
public class Global
{
static internal FormPrec fromPrec=null;//僅可在程序集內(nèi)訪問
static internal FormPres fromPres=null;
static internal FormTemp fromTemp=null;
public Global()
{}
}
}
//修改后
if(Global.fromPres==null)
{
Global.fromPres=new FormPres();
}
Global.fromPres.Show();
3)改進(jìn):大量窗體存在時(shí)直接聲明引用顯的很笨拙。我們使用ArrayList類。
優(yōu)點(diǎn):類活
缺點(diǎn):復(fù)雜
a.窗體
Form frmX=null;//受管理的窗體
private void button3_Click(object sender, System.EventArgs e)
{
//SC_Weather為窗體所在的名稱空間
frmX=Global.OpenForm(Type.GetType("SC_Weather.FormPres"));//建立窗體(創(chuàng)建并向列表中增加)
frmX.Show();//顯示
}
private void btnRemove_Click(object sender, System.EventArgs e)
{
Global.RemoveForm(frmX);//從列表中刪除
frmX.Close();//關(guān)閉
}
b.Global.cs
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace SC_Weather
{
public class Global
{
static internal ArrayList arrForms=new ArrayList();//窗體列表
public Global()
{}
//返回一個(gè)窗體(包含增加)
static internal Form OpenForm(Type typeForm)
{
foreach(Form frmLoop in arrForms)
{
if(frmLoop.GetType()==typeForm)
{
return frmLoop;//返回存在的工作窗體
}
}
Form frmWork=null;//工作窗體
if(typeForm==Type.GetType("SC_Weather.FormTemp"))
{
frmWork=new FormTemp();//新建窗體
}
if(typeForm==Type.GetType("SC_Weather.FormPres"))
{
frmWork=new FormPres();
}
if(typeForm==Type.GetType("SC_Weather.FormPrec"))
{
frmWork=new FormPrec();
}
if(frmWork!=null)
arrForms.Add(frmWork);
return frmWork; //返回新建的工作窗體
}
//移除一個(gè)窗體
static internal void RemoveForm(Form frmRemove)
{
arrForms.Remove(frmRemove);
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -