关于button可见性的问题
我有两个panel,大panel1,小panel2,panel2在panel1里面,然后panel2里面还有一个picturebox和一个button,像这样情况是:我想在鼠标进入panel1、panel2、pieturebox、button的时候,都让panel1背景变为红色,同时button可见,默认的button不可见
在panel1、panel2、pieturebox、button的MouseEnter事件里都让panel1变为红色,在MouseLeave事件里判断鼠标是否在其他的控件里面,如果都不在则让panel1变为其他颜色,否则还是红色
然后在panel1的backgroundcolorchanged事件里面判断颜色是否为红色,如果是红色,就让button可见
当鼠标进入button的时候,系统会认为鼠标离开了panel1、panel2、picturebox,然后panel1的颜色变为了其他颜色,button被置为不可见了(事实上颜色还是红色,但是button已经不可见了,感觉应该是颜色延迟的问题),不可见的button又响应不了MouseEnter函数。。。我想让鼠标进入button的时候button仍然可见 这个问题怎么解决??? button panel 可见性 鼠标 --------------------编程问答-------------------- 哈哈,楼主你这个方法好纠结啊,其实可以简化的 --------------------编程问答--------------------
--------------------编程问答-------------------- 学习了 --------------------编程问答-------------------- 就个逻辑判断问题吧,enable默认为false,鼠标进入panel区就true,背景什么的都可以自己写的 --------------------编程问答-------------------- 如果事件响应不了那个button是否可见 我建议你单独写一个方法 把你刚刚的情况考虑进去 事件里面直接调用方法 试试看 --------------------编程问答-------------------- 我在panel1、panel2、picturebox、button的MouseEnter事件里面都将panel1的背景设置为红色,MouseLeave事件里面判断鼠标是否都不在这四个控件里面,如果在其中任何一个里面,就将panel1的背景还设置为红色,如果不在任何一个控件里面,就像panel1的背景设置为其他颜色。panel1的backcolorchanged事件里面判断背景是否为红色,是红色的时候就让button都可见,不是红色的时候就让button不可见。可是现在的问题是 当鼠标进入button的时候,系统会认为鼠标已经离开了panel1、panel2、picturebox,这时panel1的背景变为其他颜色的同时button被设置为不可见了,然后虽然鼠标进入了button,但是不可见的button响应不了MouseEnter事件。。。这个是有点儿矛盾 楼上的方法我都试了 还是不行。。。 --------------------编程问答--------------------
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
button1.Visible = false;
panel1.MouseEnter += TargetMouseEnter;
panel2.MouseEnter += TargetMouseEnter;
pictureBox1.MouseEnter += TargetMouseEnter;
button1.MouseEnter += new EventHandler(button1_MouseEnter);
panel1.MouseLeave += TargetMouseLeave;
}
private void TargetMouseLeave(object sender, EventArgs e)
{
SetControlState(this.BackColor, false);
}
private void TargetMouseEnter(object sender, EventArgs e)
{
SetControlState(Color.Red, true);
}
private void button1_MouseEnter(object sender, EventArgs e)
{
SetControlState(this.BackColor, true);
}
private void SetControlState(Color bgColor, bool visible)
{
panel1.BackColor = bgColor;
button1.Visible = visible;
}
}
我怎么试的时候可以实现你的需求了呢 --------------------编程问答-------------------- 就是Visible 得属性值呗
--------------------编程问答-------------------- 控制按钮的属性值是否可见问题,按要求默认给控件visble=false
补充:.NET技术 , C#