打开一个窗体前,如何判断已经打开过一个实例了呢?如果打开就不再打开了?
------------------------------------ FrmAddGjj frmAdd = new FrmAddGjj();
frmAdd.Show();就是如同这样的代码,可以打开任意多个窗体,
但是我想实现,如果打开过了,就不再打开了。只是将刚才的激活就行了。如何实现呢?另外,我如何给窗体的控件传值呢?
我其实是在做一个添加记录的窗体,窗体启动后,在文本框中显示月份,编号,姓名等信息,然后等待用户录入其他信息?关键想实现:1.窗体只打开一次,
2.可以向窗体传值,让窗体启动后,文本框中就有初始化好的信息。
------------------------------------ FrmAddGjj frmAdd = new FrmAddGjj();
frmAdd.Show();就是如同这样的代码,可以打开任意多个窗体,
但是我想实现,如果打开过了,就不再打开了。只是将刚才的激活就行了。如何实现呢?另外,我如何给窗体的控件传值呢?
我其实是在做一个添加记录的窗体,窗体启动后,在文本框中显示月份,编号,姓名等信息,然后等待用户录入其他信息?关键想实现:1.窗体只打开一次,
2.可以向窗体传值,让窗体启动后,文本框中就有初始化好的信息。
/// <summary>
/// 名称:CheckChildOpenState
/// 功能:用子窗体的Name进行判断是否已实例化,如果存在则将他激活
/// </summary>
/// <param name="MdiForm">容器窗体</param>
/// <param name="ChildForm">子窗体</param>
public static void CheckChildOpenState(Form MdiForm, Form ChildForm)
{
foreach (Form tempChildForm in MdiForm.MdiChildren)
{
if (tempChildForm.Name == ChildForm.Name.ToString())
{
if (tempChildForm.WindowState == FormWindowState.Minimized)
{
tempChildForm.WindowState = FormWindowState.Normal;
}
tempChildForm.Activate();
return;
}
}
ChildForm.MdiParent = MdiForm;
ChildForm.Show();
}
#endregion
点击打开,再点击隐藏,再点击打开......
问题二:另外,我如何给窗体的控件传值呢?
FrmAddGjj frmAdd = new FrmAddGjj(int inum);
frmAdd.Show();修改构造函数将int inum作为参数传给这个窗体的成员就可以用了
例如private void button9_Click(object sender, EventArgs e)
{
Form1 singleForm = null;//初始化为空
foreach (Form item in Application.OpenForms)
{
if (item is Form1)
{
singleForm = item;
break;
}
}
if (singleForm == null) singleForm = new Form1();
singleForm.Show();
}
{
Form1 singleForm = null;//初始化为空
foreach (Form item in Application.OpenForms)
{
if (item is Form1)
{
singleForm = item as Form1;
break;
}
}
if (singleForm == null) singleForm = new Form1();
singleForm.Show();
singleForm.BringToFront();
}
private static FMessage instance = null;
//添加一个属性,FMessge是窗体名
public static FMessage Instance
{
set
{
}
get
{
if (instance == null)
{
new FMessage();
}
return instance;
}
}//在窗体的构造或load事件中
public FMessage()
{
InitializeComponent();
instance = this;//写上这个
}
//窗体关闭事件
void FMessage_FormClosed(object sender, FormClosedEventArgs e)
{
instance = null;
}//------------------------------
//调用
FMessage fmess = FMessage.Instance;//这注意
fmess.Show();
if(frm!=null && !frm.IsDisposed))
{
frm.Show();
}
//添加一个属性,FMessge是窗体名
public static FMessage Instance
{
set
{
}
get
{
if (instance == null)
{
new FMessage();
}
return instance;
}
}//在窗体的构造或load事件中
public FMessage()
{
InitializeComponent();
instance = this;//写上这个
}
//窗体关闭事件
void FMessage_FormClosed(object sender, FormClosedEventArgs e)
{
instance = null;
}//------------------------------
//调用
FMessage fmess = FMessage.Instance;//这注意
fmess.Show();