紧急求助 请求大神帮我解决
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;
}
} --------------------编程问答--------------------
你的enter加在GroupBox上了,不是按钮!!!!!
补充:.NET技术 , C#