当前位置:编程学习 > C#/ASP.NET >>

紧急求助 请求大神帮我解决

  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”。 --------------------编程问答--------------------  Button bn = (Button)sender;
换成
 Button bn = sender as sender;
if(bn == null)
{
return;
} --------------------编程问答-------------------- 我换了 但是  提示 sender 没有命名空间 这个命名空间怎么导
??? --------------------编程问答-------------------- 无法将类型为“System.Windows.Forms.GroupBox”的对象强制转换为类型“System.Windows.Forms.Button”。
错了
换成

GroupBox bn = sender as GroupBox ;
if(bn == null)
{
return;
}
触发事件的是GroupBox控件,不是Button控件啊
所以不能把sender转成Button


--------------------编程问答-------------------- 我给你看看我之前的源码 也是这样写的 就没有问题
--------------------编程问答--------------------      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;
            }
        } --------------------编程问答--------------------
引用 3 楼  的回复:
无法将类型为“System.Windows.Forms.GroupBox”的对象强制转换为类型“System.Windows.Forms.Button”。
错了
换成

GroupBox bn = sender as GroupBox ;
if(bn == null)
{
return;
}
触发事件的是GroupBox控件,不是Button控件啊
所以不能把sender转成……

你的enter加在GroupBox上了,不是按钮!!!!!
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,