C#如何打开另一个新窗口的同时关闭自身窗口?
Form2 NewForm=New Form2();
NewForm.Open();
This.Close();这样写不行,应用程序全部关闭了。
Form2 NewForm=New Form2();
NewForm.Open();
This.Close();这样写不行,应用程序全部关闭了。
解决方案 »
- 从最小化恢复窗体是显示有问题
- 没分了。。。二维数组问题
- 重零学起 Nunit 测试?
- c#中如何传递文本给记事本程序
- C#combobox selectedvalue无法获取值
- C#里 split()方法到底怎么用?
- 哪里有下载 最新 visual stuido .net 企业版的?速度快的
- 请高手帮忙解决用Response.AddHeader下载时,我点击打开,要打开两次的问题,谢谢!
- 在winForm下DataGrid控件中同时选中多条记录的问题
- 如何把垂直滚动条绑定在LISTVIEW的控件中,LISTVIEW本身滚动条FALSE!
- 怎么样用asp.net生成静态页面,特别是生成分页,该如何处理?
- C#读取ini文件的奇怪问题?
是不是要这样?
This.Close();
NewForm.Open();
Form2 NewForm=New Form2();
NewForm.Show();
This.Close();
大家快告诉我啊
fm.Show();
this.Visible=false;
这样就可以了
Form2 form2=new Form2();
form2.ShowDialog(this);
我的做法```
先执行Form1.ActiveForm.Visible=false;
再new窗体 要不不行 调试过了的
private Form2_Load(Form1 fr)
{
InitializeComponent();
fr.Close();
}
Form1里的代码:
private BtnFormShow_Clice(object sender, System.EventArgs e)
{
Form2 f = new Form2(this);
f.show;
}这样就可以了
但要记得关闭Form2的时候,要把Form1也关掉。
Form2 NewForm=New Form2();
this.hide();
NewForm.ShowDialog();
This.Dispose();---------------------------------------
sean840610(更木剑八) 你的办法不行吧。
Form2 把Form1 关闭了,那么Form2也会被关闭吧。
this.hide();
NewForm.ShowDialog();
This.Dispose();然后,showdialog之后如果不把NewForm关闭是不会触发this.Dispose()事件的,结果还是只起到了this.hide()的作用。
重新写了一个Form2 的构造函数,按你的步骤这样做结果Form2跟Form1一起退出了。
public Form2(Form1 fm)
{
//
// Required for Windows Form Designer support
//
InitializeComponent(); //
// TODO: Add any constructor code after InitializeComponent call
//
fm.Close();
}-----------------------------------------然后,showdialog之后如果不把NewForm关闭是不会触发this.Dispose()事件的,结果还是只起到了this.hide()的作用。NewForm 使用的是 ShowDialog(),执行到这个地方,NewForm已经关闭了。
//在一个按钮中
Form2 fm = new Form2(this);
fm.Show();
//Form2 中
public Form2(Form1 fm)
{
InitializeComponent();
fm.Close();
}
------------------------
效果不对,哪里问题?
----------------------------------------------------
恩,我也是在2003测试的。
sean840610(更木剑八)用的是2005吧?
估计在Form2关闭Form1,From2不被关闭的可能性不大。
C# 就不太清楚了
换个方式
在class1中打开form1
在Form1中定义一个事件告诉class1:"把form2并打开把我关了"
然后再由class1把form2打开不就是了
newwindow.Show()
Me.Finalize()
登录后原来的关闭 Dim newwindow As New FrmMain
newwindow.Show()
Me.Finalize()
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
以上代码是创建一个运行的主线程,你使用This.Close()时就关闭了此进程,所以程序退出。在应用程序若要实现你要做的,需要把上边的代码移动到其他的你一直都不要关闭的主FORM中就可以了,再将代码修改为以下即可:[STAThread]
static void Main()
{
Form1 m = new Form1();
m.ShowDialog();
Application.Run(new Form2());//Form2是你一直都不要关闭的主窗体。
}
fm.Show();
this.Visible=false;
这样就可以了
上面 ba_jiang()说的很对啊
fm.Show();
this.dispose();
我一直都是用这样的方法
我按你的方法试了一下,还是整个应用程序都被关了!
我按你的方法也试了,思路应该是正确的,只是在我关闭了Form1之后,一下子出现了两个同样的Form2窗口,只要关闭一个,另一个也关闭了。但是我感觉你的方法应该是正确的。不知道还要修改哪里
建议把Main()函数放在另外一个.cs文件里,一般默认是在Form1中,楼上的"sdpdww"做法得到的效果是打开一个FORM,然后把主程序关了,就犹如没了爹,怎么还能生个孩子??
1. 首先你得这种编程思路有些绕,因为通常的windows程序是以主窗口加多个字窗口方式运行的。我初期在编写wince程序时和你有同样的想法。最后重新设计了整个程序的框架,完美解决。
2. 如果非要这样做,以下方法是比较完美的方案:
关闭form1,弹出form2;关闭form2,整个程序关掉:
如果在vs2003中,新建一个.cs文件,把main()函数剪到里面,如果在vs2005中,直接改program.cs
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false); Form1 fm1 = new Form1();
Application.Run(fm1 );
Form2 fm2 = new Form2();
Application.Run(fm2);
}
}
问题已经得到完美解决。加你分!
谢谢大家,结贴
如果在vs2003中,新建一个.cs文件,把main()函数剪到里面,如果在vs2005中,直接改program.cs
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);Form1 fm1 = new Form1();
Application.Run(fm1 );
Form2 fm2 = new Form2();
Application.Run(fm2);
}
}没办法,人长得就那样,改来改去不如用原相!希望不要令你感觉刺眼!
哎,怎么感觉你们都爱钻牛角尖...应该这样:
把FROM2设为启动页面,
然后在FROM2_LOAD里面的第一句就SHOW一个FROM1的模式对话框出来...FROM1不关闭FROM2自然不会显示出来.
狂汗!!!
如果你是要登录窗体或初始化窗体,用下面的方法OnLoad方法是Application.Run中运行的
frmInit 为初始化窗体,frmInit不要调用Close()方法,
关闭frmInit 时应该使用DialogResult===\\\
protected override void OnLoad(EventArgs e)
{
frmInit frminit = new frmInit();
//指明了初始化窗体的父级
frminit.Owner = this;
if (frminit.ShowDialog(this) == DialogResult.OK)
{
//你的代码
}// end if
else
{
this.Close();
this.Dispose();
Application.Exit();
}// end else if
base.OnLoad(e);
}// end void
可惜怎么没有呢
会全部的楼上:
Environment.Exit(0).行不行