有一个方法,要打开另外一个窗体fr1 但是每次调用的时候,总是要打开好多次。有什么方法只显示最后一次打开的窗体fr1。
解决方案 »
- load使用上了为什么有错?哪里出错了?
- c# 本地运行远程机器上EXE文件
- 跪求读加密狗模块字里面的值
- 请教俩个问题,这样的系统该怎么做?
- 请问哪里有wince环境下的.net freamwork环境包下
- 讨论:一个大流量网站应该注意什么?例如页面缓存、页面生成静态、数据库建立索引,还有什么别的方法吗?
- 要做一个类似VISIO操作的软件 需要用到哪些知识呢?
- [求助] ADO.net中,使用OLEDB,调用存储过程,怎样才能得到输出参数的值?为何我一直都只能得到空值呢?
- 怎么汉化fastreport中组件属性呢?请教了
- datagrid的一个很简单且经典的保存到数据库的问题(我想很多朋友也碰到过吧,请问是怎么解决的)
- C#遇到问题了,无法隐式转换?
- 用户控件
frm.showdialog();
public void open(Form fr)
{
fr = new Form();
fr.ShowDialog();
} private void button1_Click(object sender, EventArgs e)
{
Form dr=new Form();
open(dr);
}
比如需要处理的窗体类是YourForm,那么定义一个YourForm的引用:
privte YourForm yf = null;
然后,需要显示这个Form是如下处理:
if (yf == null)
{
yf = new YourForm();
}
yf.Visible = true;
关闭而不注销该对象则:
if (yf != null)
{
yf.Visible = false;
}
注销该对象(当然,这个注销的实际过程可能不是想象的那样):
if (yf != null)
{
yf.Dispose();
yf = null;
}
用过Qt-Designer的应该都知道,Qt里面自动生成的窗体处理一般都是这样的。
也可以枚举当前所有的窗口对象,查找该对象(可以根据窗口名称属性),如:
private Form GetForm(string text)
{
foreach (Form f in this.MdiChildren)
{
if (f.Text == text)
{ return f; }
}
return null;
}然后调用的时候用类似下面的代码:
frmFileDown frm = (frmFileDown)GetForm("归档文件下载");
if (frm == null) { frm = new frmFileDown(); }
frm.MdiParent = this;
frm.WindowState = FormWindowState.Normal;
frm.TopMost = true;
frm.Show();
可以先声明一个全局的Form1对象form1;
然后在要打开的窗口事件中:
if(form1==null)
form1=new Form1();
form1.show();
form1.WindowState = FormWindowState.Normal;
{
private static Form2 form = null; private Form2()
{
InitializeComponent();
}
public static Form getForm()
{
if( form==null )
{
form = new Form2();
}
return form;
}
}
然后 form1 里边 只需调用这个getFrom()这个方法就行了
bool opened=false;
foreach(Form f in MdiParent.MdiChildren)
{
if(f.Name=="Form1")
{
opened=true;f.Show();
break;
}
}
if(!opened)
{
Form1 fm=new Form1;
fm.Show();
}
Form1 frm=new Form1();
frm.Tag=false;
if(!(bool)frm.Tag)
{
frm.Show();
frm.Tag=true;
}
{
private static Form1 form; private Form1()
{
InitializeComponent();
}
public static Form getForm()
{
if( form==null ||this.Dispose)
{
form = new Form1);
}
return form;
}
} 然后 form2里边 只需调用这个getFrom()
Form1 form=Form1.getFrom();