private void gbKJCD_Enter(object sender, EventArgs e)
        {
            //找到事件触发对象
            gbKJCD.Enabled = false;
            Button bn = (Button)sender;
            Panel pal = findChildPal(bn.Text.Trim());
            //隐藏非选择面板
            if (!pal.Visible)
            {
                hideAllChild(pal);
            }
            //判断是否显示功能面板
            if (bn.Top==25)
            {
                pal.Visible = false;
                bn.Top = lastPos;
                isShow = true;
                lastPos = 0;
                gb_timer.Start();
            }
            else
            {
                //显示
                isShow = false;
                lastPos = bn.Top;
                bn.Top = 25;
                gb_timer.Start();
                    
            }
        }
        int speed = 45;
        private void gb_timer_Tick(object sender, EventArgs e)
        {
            if (isShow)
            {
                //显示功能面板
                if (gbKJCD.Height+speed>this.Height-170)
                {
                    gbKJCD.Height = this.Height - 150;
                    gb_timer.Stop();
                    gbKJCD.Enabled = true;
                    return;
                }
                gbKJCD.Height += speed;
            }
            else
            {
                //隐藏功能面板
                if (gbKJCD.Height - speed < 75)
                {
                    gb_timer.Stop();
                    gbKJCD.Enabled = true;
                    gbGNCD.Left = 0;
                    gbGNCD.Top = 120;
                    gbKJCD.Height = 68;
                    return;
                }
                gbKJCD.Height -= speed;
            }        }
        private void gbKJCD_Resize(object sender, EventArgs e)
        {
            if (!isShow)
            {
                gbGNCD.Top = gbKJCD.Height + gbKJCD.Location.Y + 10;
                int height = this.Height - gbKJCD.Height - 79;
                gbGNCD.Height = height - 45;
            }
            else
            {
                int height = this.Height - gbKJCD.Height - 79;
                gbGNCD.Height = height - 45;
                gbGNCD.Top = gbKJCD.Height + gbKJCD.Location.Y + 10;
            }
        }        private void frmMain_SizeChanged(object sender, EventArgs e) 
        {
            if (lastPos != 0)
            {
                gbKJCD.Height = 68;
            }
        
        }
        private void hideAllChild(Panel pal)
        {
            //隐藏其他面板
            palKHGL.Visible = false;
            palSSGL.Visible = false;
          
            if (pal != null)
            {
                pal.Visible = true;
            }        }
             private Panel findChildPal(String text)
        {
            switch (text)
            {
                case "客户管理":
                    return palKHGL;
                case "实施管理":
                    return palSSGL;
                default:
                    return null;
            }
        }
这段代码 为什么在    Button bn = (Button)sender;  提示无法将类型为“System.Windows.Forms.GroupBox”的对象强制转换为类型“System.Windows.Forms.Button”。

解决方案 »

  1.   

     Button bn = (Button)sender;
    换成
     Button bn = sender as sender;
    if(bn == null)
    {
    return;
    }
      

  2.   

    我换了 但是  提示 sender 没有命名空间 这个命名空间怎么导
    ???
      

  3.   

    无法将类型为“System.Windows.Forms.GroupBox”的对象强制转换为类型“System.Windows.Forms.Button”。
    错了
    换成GroupBox bn = sender as GroupBox ;
    if(bn == null)
    {
    return;
    }
    触发事件的是GroupBox控件,不是Button控件啊
    所以不能把sender转成Button
      

  4.   

         private void gbFunc_Enter(object sender, EventArgs e)
            {        }        /// <summary>
            /// 功能面板的单击事件
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            /// 
            private void funcSelect_Click(object sender, EventArgs e)
            {
                //找到事件触发对象
                gbFunc.Enabled = false;
                Button bn = (Button)sender;
                Panel pal = findChildPal(bn.Text.Trim());
                //隐藏非选择面板
                if (!pal.Visible)
                {
                    hideAllChild(pal);
                }
                //判断是否是显示功能面板
                if (bn.Top == 25)
                {
                    //隐藏
                    pal.Visible = false;
                    bn.Top = lastPos;
                    isShow = true;
                    lastPos = 0;
                    gb_time.Start();
                }
                else
                {
                    //显示
                    isShow = false;
                    lastPos = bn.Top;
                    bn.Top = 25;
                    gb_time.Start();
                }        }        /// <summary>
            /// 对功能面板实现动态效果
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            int speed = 45;
            private void gb_time_Tick(object sender, EventArgs e)
            {
               
                if (isShow)
                {
                    //显示功能面板
                    if (gbFunc.Height+speed > this.Height - 170)
                    {
                        
                        gbFunc.Height = this.Height - 150;
                        gb_time.Stop();
                        gbFunc.Enabled = true;
                        return;                }
                    gbFunc.Height += speed;
                }
                else
                {
                    //隐藏功能面板                if (gbFunc.Height - speed < 75)
                    {
                        
                        gb_time.Stop();
                        gbFunc.Enabled = true;
                        gbFuncChild.Left = 0;
                        gbFuncChild.Top = 120;
                        gbFunc.Height = 68;
                        return;
                    }
                    gbFunc.Height -= speed;            }
            }
            /// <summary>
            /// 实再子功能面板的动态效果
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void gbFunc_Resize(object sender, EventArgs e)
            {
                if (!isShow)
                {
                    gbFuncChild.Top = gbFunc.Height + gbFunc.Location.Y + 10;
                    int height = this.Height - gbFunc.Height - 79;
                    gbFuncChild.Height = height - 45;//在状态栏之上
                }
                else
                {
                    
                    int height = this.Height - gbFunc.Height - 79;
                    gbFuncChild.Height = height - 45;//在状态栏之上
                    gbFuncChild.Top = gbFunc.Height + gbFunc.Location.Y + 10;
                }        }        /// <summary>
            /// 窗口的大小改变时
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void MainManagerFrm_SizeChanged(object sender, EventArgs e)
            {
                if (lastPos != 0)
                {
                    gbFunc.Height = 68;
                }
            }        /// <summary>
            /// 隐藏其它面板
            /// </summary>
            /// <param name="pal">要显示的面板</param>
            private void hideAllChild(Panel pal)
            {
                palAdMgt.Visible = false;
                palPeMgt.Visible = false;
                palSaMgt.Visible = false;
                palStMgt.Visible = false;
                palTrMgt.Visible = false;
                if (pal != null)
                {
                    pal.Visible = true;
                }        }
            /// <summary>
            /// 找出与功能按钮对应的子面板
            /// </summary>
            /// <param name="text"></param>
            /// <returns></returns>
            private Panel findChildPal(String text)
            {
                switch (text)
                {
                    case "人事管理":
                        return palPeMgt;
                    case "供应商客户信息":
                        return palAdMgt;
                    case "培训管理":
                        return palTrMgt;
                    case "薪金管理":
                        return palSaMgt;
                    case "统计管理":
                        return palStMgt;
                    default:
                        return null;
                }
            }
      

  5.   

    你的enter加在GroupBox上了,不是按钮!!!!!