窗体切换问题...顶都有分....

ke5315309003 2009-08-06 09:10:38
        
private void View_Load(object sender, EventArgs e)
{
Form2 form2 = new Form2();
this.Hide();
form2.Show();
}

为什么会跳去两个体..一个是Form2 这个窗体..一个是this.View1 这个窗体..这个窗体我不是隐藏了吗...


private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult dr = MessageBox.Show(this, "你确定要退出吗?", "退出系统通知", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dr == DialogResult.Yes)
{
Application.Exit();
}
else
{
e.Cancel = true;
}
}

这个也是跳出二次对话框.....
...全文
129 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
skk5529765 2009-08-06
  • 打赏
  • 举报
回复
顶一下
liming7758521522 2009-08-06
  • 打赏
  • 举报
回复
严谨点哈,触发了那个方法
liming7758521522 2009-08-06
  • 打赏
  • 举报
回复
Application.Exit();
这个语句调用了这个方法
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
}
自调用了一遍
liming7758521522 2009-08-06
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 sadikaqy 的回复:]
C# codeprivatevoid View_Load(object sender, EventArgs e)
{
Form2 form2=new Form2();
form2.Show();this.visible=false;
}
[/Quote]
不管用,相信我
ke5315309003 2009-08-06
  • 打赏
  • 举报
回复
搞定了...谢谢大家
zkusaaaa 2009-08-06
  • 打赏
  • 举报
回复
帮顶,接分
Lovely_baby 2009-08-06
  • 打赏
  • 举报
回复
帮顶,接分
风之影子 2009-08-06
  • 打赏
  • 举报
回复
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
DialogResult dr = MessageBox.Show(this, "你确定要退出吗?", "退出系统通知", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dr == DialogResult.Yes)
{
Application.Exit();
//改为
this.Dispose();
}
}


这个这样写还是不可以...还是会跳去两个... 这个要怎么写呢....
michaelnami 2009-08-06
  • 打赏
  • 举报
回复
帮顶
sadikaqy 2009-08-06
  • 打赏
  • 举报
回复

private void View_Load(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.Show();
this.visible = false;
}
南哥1207 2009-08-06
  • 打赏
  • 举报
回复
1:你说现实原来是ShowInTaskbar?

2:
e.Cancel = true;
DialogResult dr = MessageBox.Show(this, "你确定要退出吗?", "退出系统通知", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dr == DialogResult.Yes)
{
e.Cancel = false;
}

这个就ok了~
BitCoffee 2009-08-06
  • 打赏
  • 举报
回复
或者加个试试:this.Dispose();
================================
this.Dispose();
Application.Exit();
zgke 2009-08-06
  • 打赏
  • 举报
回复
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult dr = MessageBox.Show(this, "你确定要退出吗?", "退出系统通知", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dr != DialogResult.Yes)
{
e.Cancel = true;
}



}
rollthewong 2009-08-06
  • 打赏
  • 举报
回复
帮顶。
满衣兄 2009-08-06
  • 打赏
  • 举报
回复
问题一:Load加载之后程序还有个show的事件,所以在Load中hide是无效的,可以写在Shown事件中
即:
private void View_Shown(object sender, EventArgs e)
{
this.Hide();
Form2 frm = new Form2();
frm.Show();

}


问题二:首先要明白以下两种方法的区别:
Application.Exit:通知winform消息循环退出。
Environment.Exit:终止当前进程,返回exitcode给操作系统

当使用Application.Exit退出程序时,首先通知winform消息循环退出,这个时候因为View窗体是hide状态,并且View是Form2的父窗体,所以当第一次出现messagebox时候要先关闭父窗体,即程序返回到父窗体,当父窗体关闭之后要关闭子窗体,所以又提示了一次messagebox.
解决方法可以修改为Environment.Exit.即:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult dr = MessageBox.Show(this, "你确定要退出吗?", "退出系统通知", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dr == DialogResult.Yes)
{
//Application.Exit();
Environment.Exit(0);
}
else
{
e.Cancel = true;
}
}
ke5315309003 2009-08-06
  • 打赏
  • 举报
回复
第一个问题可以了..
Form2 form2 = new Form2();
this.Hide();
this.ShowInTaskbar = false;
form2.Show();

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
DialogResult dr = MessageBox.Show(this, "你确定要退出吗?", "退出系统通知", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dr == DialogResult.Yes)
{
Application.Exit();
}
}


这个这样写还是不可以...还是会跳去两个... 这个要怎么写呢....



纯纯璐璐 2009-08-06
  • 打赏
  • 举报
回复
帮顶!
zhantianyou 2009-08-06
  • 打赏
  • 举报
回复
感覺這樣寫代碼有問題。看起來怪怪的。
wonder888888 2009-08-06
  • 打赏
  • 举报
回复
接分~~~
abc1_2_3 2009-08-06
  • 打赏
  • 举报
回复
我错了,又试了一次,确实是两个
加载更多回复(11)

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧