我现在的页面像这样_______________________
|panel1               |
|         Texbox      |
|        MonthCalendar|
|_____________________|
|panel2               |
|                     |
|                     |
|_____________________|现在点击TextBox,就把MonthCalendar显示出来,用了BringToFront()方法后,还是是被下面的panel2挡住了。但是却不能将panel1调用BringToFront(),因为这样一来,panel1上面的其他控件就被挡住了。 
现在我的想法是将MonthCalendar加载到最外层的Form上,但是这样一来,坐标又不好取了,本来MonthCalendar的坐标应该是在Texbox的坐标基础上做适当的修改,但是如果加载到外层的Form上后,就不能用Texbox.Location所取得的坐标了。
就这两个问题,该如何解决呢?

解决方案 »

  1.   

    因为MonthCalendar不属于panel2,你可以先把panel1置前
      

  2.   

    其实我主要是想要一个像DateTimePicker那样的一个选择月份的控件,这样就是不考虑容器控件是怎样布局的,它都可以完整的显示出来。
      

  3.   


     if (Ptemp == null)
                {
                    TempControl = new Control();
                    TempControl = this.Parent;
                    Ptemp = new Panel();                mcPicker = new MonthCalendar();                mcPicker.Dock=DockStyle.Fill;
                    Ptemp.Controls.Add(mcPicker);
                    TempControl.Controls.Add(Ptemp);
                    rectPicker = this.Location;            }
                Ptemp.BringToFront();
                Ptemp.Top = (rectPicker.Y) + this.Height-1;
                Ptemp.Left = (rectPicker.X);
                Ptemp.Width = 269;
                Ptemp.Height = 145;
                Ptemp.Show();
                mcPicker.DateSelected += new DateRangeEventHandler(mcPicker_DateSelected);
                mcPicker.MouseLeave += new EventHandler(mcPicker_MouseLeave);
                mcPicker.DateChanged += new DateRangeEventHandler(mcPicker_DateChanged);
    这样的代码试过了
    效果就是这个样子
    还是有被下面的控件给挡住了