我要做4个界面 1个主菜单界面可以转到其他3个功能界面
3个功能界面之间可以任意切换开始用panel做的 切换时界面中的图片老出现短暂的空白
然后就改用几个窗体之间的切换
切换代码:
 private void pictureBox1_Click(object sender, EventArgs e)
        {
            Form2 fr2 = new Form2();
            fr2.Show();
            this.Hide();
        }
可是这样做切换几次就出错了
提示:“已关闭 safe handle”
请问要怎么该啊???
求各位大神帮下忙。

解决方案 »

  1.   

    panel应该没有问题,还是你控制不好,再不行你可以使用pagecontrol
      

  2.   

      /// <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控件加载的
      

  3.   

    我是这样写的 private void pictureBox1_Click(object sender, EventArgs e)
            {
                this.Controls.Clear();
                this.Controls.Add(this.panelPwer);
                this.panelPwer.Dock = DockStyle.Fill;
            }
    可是这样 切换时就要刷新下界面  图片就会出现很短暂的空白
      

  4.   

    LZ当然了
    this.Hide();
    改成this.Close();
      

  5.   

    +1一直Hide()的话,窗体会越来越多,只不过都隐藏了
      

  6.   

    不过Close()的话,弹出来的窗体也是会关闭掉的吧这样的话就要考虑1楼的建议了
      

  7.   

    建议不用的窗体就this.close(),而不是隐藏,等需要显示再次创建。
      

  8.   


    不行的  close我试过了
      

  9.   


    这个也可以 比过你隐藏到托盘的图片必须是ico格式的
      

  10.   

     //不现实系统托盘
    this.notifycon1.Visible = false;//窗体初始化时这是隐藏到托盘的代码
    private void btnHide_Click(object sender, EventArgs e)
            {
                //系统托盘显示图标
                this.notifycon1.Visible = true;
                //隐藏主界面
                this.Visible = false;
            }