菜鸟求教窗体切换的问题

jianmeix 2011-08-31 10:54:49


我要做4个界面 1个主菜单界面可以转到其他3个功能界面
3个功能界面之间可以任意切换

开始用panel做的 切换时界面中的图片老出现短暂的空白
然后就改用几个窗体之间的切换
切换代码:
private void pictureBox1_Click(object sender, EventArgs e)
{
Form2 fr2 = new Form2();
fr2.Show();
this.Hide();
}
可是这样做切换几次就出错了
提示:“已关闭 safe handle”
请问要怎么该啊???
求各位大神帮下忙。
...全文
126 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenzunxiong 2011-08-31
  • 打赏
  • 举报
回复
用卡片布局
小珩 2011-08-31
  • 打赏
  • 举报
回复
不过Close()的话,弹出来的窗体也是会关闭掉的吧

这样的话就要考虑1楼的建议了
小珩 2011-08-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zyloveyrf 的回复:]

LZ当然了
this.Hide();
改成this.Close();
[/Quote]
+1

一直Hide()的话,窗体会越来越多,只不过都隐藏了
萧炎 2011-08-31
  • 打赏
  • 举报
回复
LZ当然了
this.Hide();
改成this.Close();

jianmeix 2011-08-31
  • 打赏
  • 举报
回复
各位大神们 帮帮忙撒
jianmeix 2011-08-31
  • 打赏
  • 举报
回复
我是这样写的

private void pictureBox1_Click(object sender, EventArgs e)
{
this.Controls.Clear();
this.Controls.Add(this.panelPwer);
this.panelPwer.Dock = DockStyle.Fill;
}
可是这样 切换时就要刷新下界面 图片就会出现很短暂的空白
耗子哭死猫 2011-08-31
  • 打赏
  • 举报
回复
/// <summary>
/// 用户管理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnUserManage_Click(object sender, EventArgs e)
{
//加载用户管理窗体
SysManagement.User.UserManage userMan = new Acctrue.DMP.Win.SysManagement.User.UserManage();
userMan.FormBorderStyle = FormBorderStyle.None;
userMan.Dock = DockStyle.Fill;
userMan.TopLevel = false;
this.pnlMainForm.Controls.Clear();
this.pnlMainForm.Controls.Add(userMan);
userMan.Show();
}

/// <summary>
/// 系统消息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSystemMgs_Click(object sender, EventArgs e)
{
//加载系统消息窗体
SystemInfo.SysInfoDisPlay sysInfo = new Acctrue.DMP.Win.SystemInfo.SysInfoDisPlay();
sysInfo.FormBorderStyle = FormBorderStyle.None;
sysInfo.Dock = DockStyle.Fill;
sysInfo.TopLevel = false;
this.pnlMainForm.Controls.Clear();
this.pnlMainForm.Controls.Add(sysInfo);
sysInfo.Show();

}
我就是用pane控件加载的
bdmh 2011-08-31
  • 打赏
  • 举报
回复
panel应该没有问题,还是你控制不好,再不行你可以使用pagecontrol
jianmeix 2011-08-31
  • 打赏
  • 举报
回复
问题解决了 谢大家了
xiongxyt2 2011-08-31
  • 打赏
  • 举报
回复
用TabControl
萧炎 2011-08-31
  • 打赏
  • 举报
回复
//不现实系统托盘
this.notifycon1.Visible = false;//窗体初始化时

这是隐藏到托盘的代码


private void btnHide_Click(object sender, EventArgs e)
{
//系统托盘显示图标
this.notifycon1.Visible = true;
//隐藏主界面
this.Visible = false;
}
萧炎 2011-08-31
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 jianmeix 的回复:]
引用 9 楼 ajaxtop 的回复:
切换,这个词用的不对

你不用切换,用到哪个弹哪个

不用的关掉

而且可以做个托盘不用的放到托盘也行,但是每次打开先判断是否存在,如果有不创建新的


这个 等会我试试看
[/Quote]

这个也可以 比过你隐藏到托盘的图片必须是ico格式的
jianmeix 2011-08-31
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ajaxtop 的回复:]
切换,这个词用的不对

你不用切换,用到哪个弹哪个

不用的关掉

而且可以做个托盘不用的放到托盘也行,但是每次打开先判断是否存在,如果有不创建新的
[/Quote]

这个 等会我试试看
jianmeix 2011-08-31
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xz_wanyuan 的回复:]
建议不用的窗体就this.close(),而不是隐藏,等需要显示再次创建。
[/Quote]

不行的 close我试过了
欲哭无泪 2011-08-31
  • 打赏
  • 举报
回复
建议不用的窗体就this.close(),而不是隐藏,等需要显示再次创建。
ajaxtop 2011-08-31
  • 打赏
  • 举报
回复
切换,这个词用的不对

你不用切换,用到哪个弹哪个

不用的关掉

而且可以做个托盘不用的放到托盘也行,但是每次打开先判断是否存在,如果有不创建新的

110,526

社区成员

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

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

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