我有两个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仍然可见 这个问题怎么解决???buttonpanel可见性鼠标

解决方案 »

  1.   


    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;
        }
    }
      

  2.   

    就个逻辑判断问题吧,enable默认为false,鼠标进入panel区就true,背景什么的都可以自己写的
      

  3.   

    如果事件响应不了那个button是否可见  我建议你单独写一个方法  把你刚刚的情况考虑进去  事件里面直接调用方法 试试看  
      

  4.   

    我在panel1、panel2、picturebox、button的MouseEnter事件里面都将panel1的背景设置为红色,MouseLeave事件里面判断鼠标是否都不在这四个控件里面,如果在其中任何一个里面,就将panel1的背景还设置为红色,如果不在任何一个控件里面,就像panel1的背景设置为其他颜色。panel1的backcolorchanged事件里面判断背景是否为红色,是红色的时候就让button都可见,不是红色的时候就让button不可见。可是现在的问题是 当鼠标进入button的时候,系统会认为鼠标已经离开了panel1、panel2、picturebox,这时panel1的背景变为其他颜色的同时button被设置为不可见了,然后虽然鼠标进入了button,但是不可见的button响应不了MouseEnter事件这个是有点儿矛盾  楼上的方法我都试了 还是不行 
      

  5.   

    控制按钮的属性值是否可见问题,按要求默认给控件visble=false