none
关于控件的覆盖问题 RRS feed

  • 问题

  • 是这样的,我在窗体中加了一个listbox
     然后再在上面有加了一个rectangle
    然后,我发现原来我给Listbox的listboxitem添加的一些事件,比如mouseenter不能触发了
    我该怎么办?
    我一定要把那个矩形放在listbox的上面,这个矩形是半透明的
    可是我又要给里面的listboxitem添加mouseenter事件

    我该怎么办?
    谢谢
    2009年2月21日 14:18

答案

  • 你可以将事件放在rectangle上,然后传递给listboxitem

    private void listBox1_MouseEnter(object sender, EventArgs e)  
    {  
      MessageBox.Show("listBox1_MouseEnter");  
    }  
     
    private void rectangleShape1_MouseEnter(object sender, EventArgs e)  
    {  
      System.Reflection.MethodInfo mi = listBox1.GetType().GetMethod(  
             "OnMouseEnter",  
             System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);  
      if (mi != null)  
        mi.Invoke(listBox1, new object[] { new EventArgs() });  



    孟宪会
    2009年2月22日 1:12
    版主

全部回复

  • 你可以将事件放在rectangle上,然后传递给listboxitem

    private void listBox1_MouseEnter(object sender, EventArgs e)  
    {  
      MessageBox.Show("listBox1_MouseEnter");  
    }  
     
    private void rectangleShape1_MouseEnter(object sender, EventArgs e)  
    {  
      System.Reflection.MethodInfo mi = listBox1.GetType().GetMethod(  
             "OnMouseEnter",  
             System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);  
      if (mi != null)  
        mi.Invoke(listBox1, new object[] { new EventArgs() });  



    孟宪会
    2009年2月22日 1:12
    版主
  • 不好意思
    可能是我没有表达清楚,我其实是想这样的,如下图所示:蓝色的为listboxitem,红色的为覆盖在Listbox上面的一个rectangle,然后,在其上再覆盖一个绿色的rectangle,这个绿色的会随时跟着我的鼠标指针移动,保持在指针下方
    我希望,当我的鼠标指针移动到某个listboxitem上面时,会触发listboxitem的某个事件,同时,还会触发rectangle的一个事件
    请问如何实现?
    谢谢
    2009年2月22日 7:16
  • 你好!
         还是需要rectangle控件转发,不然listbox的事件是不可能触发的。 

    周雪峰
    2009年2月22日 10:47
    版主