在一个窗体上放一个MonthCalendar控件,怎么实现点击窗体上任何一个位置就隐藏MonthCalendar控件呢?求大神出手指教!  有例子代码最好!

解决方案 »

  1.   

    添加这个主窗体事件,即可
      private void Form1_MouseClick(object sender, MouseEventArgs e)
            {
                monthCalendar1.Visible = false;
            }
        }    
      

  2.   

    "怎么实现点击窗体上任何一个位置"可能要用到“HOOK”监控鼠标,才可能满足。
      

  3.   


    怎么HOOK呢? 如果窗体上还有其他很多控件的话怎么办?
      

  4.   

            protected override void WndProc(ref Message m)
            {
                if (monthCalendar1.Visible)
                {
                    if (m.Msg >= 0x0201 && m.Msg <= 0x0209)
                    {
                        monthCalendar1.Visible = false;
                    }
                }
                base.WndProc(ref m);
            }
      

  5.   

    其实好几种方法,看你怎么用
    看看我楼上的实现方法,只能算一种方式。没测试,好象可以PASS
      

  6.   


    可以PASS啊.. 那你给我来个不PASS的让我学习一下呗!!
      

  7.   


    写WINFORM不知道什么是消息机制?看看书吧。
      

  8.   

    高手给贴个C#实现的最简单的HOOK例子,新手学习
      

  9.   

    重写消息处理方法,在鼠标down的消息里,判断句柄是否是日历的,不是就直接隐掉日历控件。
            protected override void WndProc(ref Message m)
            {
                if (m.Msg == 0x210)
                {
                    //鼠标down
                }
                base.WndProc(ref m);
            }
      

  10.   

    不好意思,原来是我自己没测试过    public partial class Form1 : Form,IMessageFilter
        {
            public Form1()
            {
                InitializeComponent();
                Application.AddMessageFilter(this);
            }        public bool PreFilterMessage(ref Message m)
            {
                if (monthCalendar1.Visible ) 
                { 
                    if (m.Msg >= 0x0201 && m.Msg <= 0x0209) 
                    { 
                        monthCalendar1.Visible = false;
                    } 
                }
                return false;
            }
        }
      

  11.   

    问题是可以让控件隐藏了,可是日期选择不了,点击MonthCalendar控件的"上一个月"那个按钮的时候它也隐藏了 - -! 这个比较纠结,怎么能改一下呢?