关于C#中窗体切换的问题 假如有3个form,form1,form2.form3.我从1到2,要先new一个2,才能show,从2到3 ,也是这样,我再从3到2 是不是还要new 一个2呢,这样听说就new了2个form2了,产生了副本了,是不是这样的阿,会影响效率吗,如果不想产生副本,我应该怎么做啊,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 修改2,3的构造函数form2=new form2(form1)form3=new form3(form2) 如果不想产生副本,就在构造函数中采用单件模式,这样,整个系统中,Form就只有一个了。 把2隐藏起来,等关闭3的时候在show不行么? 修改2,3的构造函数form2=new form2(form1)form3=new form3(form2)=====================================麻烦具体点行吗,我是初学者,后面括号里的有什么用啊把2隐藏起来,等关闭3的时候在show不行么?==========================================好像没有那么简单吧,你在第三个创窗体中来show,没有生成对象怎么show阿,你说调用第一个窗体的show,根本不行,人家不允许访问 class form2{ static form2 _instance; private form2() { } public static form2 Instance { get{ if(_instance = null) instance = new form2 } }}form1,form3:form2.Instance.Show() 可以使用ShowDialog()方法,弹出对话框。如果需传数据的话,可以通过一个公共类完成。 1,2,3第一次都new一下,以后再显示就别new了,不知道你这样做什么目的,如果是实现mdi的话,第一次显示时new,以后再显示时只要active一下就可以了 将Form放入一个容器中,然后,将容器公开。在容器中找到已有的实例。 把2隐藏起来,等关闭3的时候在show不行么?==========================================好像没有那么简单吧,你在第三个创窗体中来show,没有生成对象怎么show阿,你说调用第一个窗体的show,根本不行,人家不允许访问应该是可以的form1里form2 f2 = new form2()f2.show();form2里from3 f3 = new form3(f2)f2.hide();f3.show()form3里private form2 _form2;构造函数里public form3(form2 form){ _form2 = form;}form3关闭的时候_form2.Show();你试试,应该是行的通的 class form2{ static form2 _instance; private form2() { } public static form2 Instance { get{ if(_instance = null) instance = new form2 } }}form1,form3:form2.Instance.Show()-------------------------------------------------------------我用这个方法,自己改了一下,为什么还是有问题 我的代码: static LoginedForm _instance; // static LoginedForm instance; // private LoginedForm() (如果不去掉,会报错) // { // } public static LoginedForm Instance { get { if (_instance.Created == false) //报错:未将对象引用设置到对象的实例 _instance = new LoginedForm(); return _instance; } }然后我在其他窗体中show,结果报错 未将对象引用设置到对象的实例 怎么办 instance.Created 值初始化了么? _instance = new LoginedForm();后应该将instance.Created = true不用专门弄个变量来记录创建没有,判断_instance == null即可 listbox获取不到数据库的数据 下载附件却提示下载当前页面.aspx文件 关于动态生成静态页面的问题 获取文件路径的问题 C#类封装数据库操作的问题 listview中显示行数的问题 C#是不是同时有IDispose和IDisposable这两个接口? VS2005与VS2008的项目相互转换工具与源码 请问各位大侠用c#做网页是用Microsoft Visual Studio .NET 2003 还是 Macromedia Dreamweaver MX . 什么叫做“元数据”? 正则表达式问题~ (向来有开帖就有结帖!) 怎样让程序一启动就到托盘?
form2=new form2(form1)
form3=new form3(form2)
form2=new form2(form1)
form3=new form3(form2)
=====================================
麻烦具体点行吗,我是初学者,后面括号里的有什么用啊
把2隐藏起来,等关闭3的时候在show不行么?
==========================================
好像没有那么简单吧,你在第三个创窗体中来show,没有生成对象怎么show阿,你说调用第一个窗体的show,根本不行,人家不允许访问
{
static form2 _instance;
private form2()
{
} public static form2 Instance
{
get{
if(_instance = null) instance = new form2
}
}
}form1,form3:
form2.Instance.Show()
如果需传数据的话,可以通过一个公共类完成。
不知道你这样做什么目的,如果是实现mdi的话,
第一次显示时new,以后再显示时只要active一下就可以了
==========================================
好像没有那么简单吧,你在第三个创窗体中来show,没有生成对象怎么show阿,你说调用第一个窗体的show,根本不行,人家不允许访问
应该是可以的form1里
form2 f2 = new form2()
f2.show();form2里
from3 f3 = new form3(f2)
f2.hide();
f3.show()form3里
private form2 _form2;构造函数里
public form3(form2 form)
{
_form2 = form;
}form3关闭的时候
_form2.Show();
你试试,应该是行的通的
{
static form2 _instance;
private form2()
{
} public static form2 Instance
{
get{
if(_instance = null) instance = new form2
}
}
}form1,form3:
form2.Instance.Show()
-------------------------------------------------------------
我用这个方法,自己改了一下,为什么还是有问题 我的代码:
static LoginedForm _instance;
// static LoginedForm instance;
// private LoginedForm() (如果不去掉,会报错)
// {
// } public static LoginedForm Instance
{
get
{
if (_instance.Created == false) //报错:未将对象引用设置到对象的实例
_instance = new LoginedForm();
return _instance;
}
}然后我在其他窗体中show,结果报错
未将对象引用设置到对象的实例
怎么办
_instance = new LoginedForm();后应该将instance.Created = true
不用专门弄个变量来记录创建没有,判断_instance == null即可