急,急,急!WinForm-C#问题!!

戒指 2010-12-02 10:29:42
在一个窗体上放一个MonthCalendar控件,怎么实现点击窗体上任何一个位置就隐藏MonthCalendar控件呢?

求大神出手指教! 有例子代码最好!
...全文
297 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
maysaber 2010-12-02
  • 打赏
  • 举报
回复
mark任何一个位置
showjancn 2010-12-02
  • 打赏
  • 举报
回复
"怎么实现点击窗体上任何一个位置"

可能要用到“HOOK”监控鼠标,才可能满足。
qyyqhy 2010-12-02
  • 打赏
  • 举报
回复
楼上正解
lexfu 2010-12-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 louti 的回复:]
引用 1 楼 as010wxw 的回复:
添加这个主窗体事件,即可

C# code
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
monthCalendar1.Visible = false;
}
}

+
[/Quote]

+
louti 2010-12-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 as010wxw 的回复:]
添加这个主窗体事件,即可

C# code
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
monthCalendar1.Visible = false;
}
}
[/Quote]
+
as010wxw 2010-12-02
  • 打赏
  • 举报
回复
添加这个主窗体事件,即可
  private void Form1_MouseClick(object sender, MouseEventArgs e)
{
monthCalendar1.Visible = false;
}
}
戒指 2010-12-02
  • 打赏
  • 举报
回复
问题是可以让控件隐藏了,可是日期选择不了,点击MonthCalendar控件的"上一个月"那个按钮的时候它也隐藏了 - -! 这个比较纠结,怎么能改一下呢?
戒指 2010-12-02
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 zenghd 的回复:]

C# code
不好意思,原来是我自己没测试过

public partial class Form1 : Form,IMessageFilter
{
public Form1()
{
InitializeComponent();
Application.AddMessageFilter(this)……
[/Quote]

谢谢赐教!
戒指 2010-12-02
  • 打赏
  • 举报
回复
这次对了! 万分感谢!!
ZengHD 2010-12-02
  • 打赏
  • 举报
回复
不好意思,原来是我自己没测试过

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;
}
}
ZengHD 2010-12-02
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 svview 的回复:]

引用 22 楼 fanglei10 的回复:

以上都对!!!!


晕~~ 上面所有的代码我都试过了,只是在点击窗体的时候会隐藏,但是我的窗体上有很多控件,点击这些控件的时候就隐藏不了! 难道要在每一个控件的事件里都添加让其隐藏的代码么?
[/Quote]

你确定你测试过我的代码?

witLuo 2010-12-02
  • 打赏
  • 举报
回复
确实是这样的
sbshu 2010-12-02
  • 打赏
  • 举报
回复
重写消息处理方法,在鼠标down的消息里,判断句柄是否是日历的,不是就直接隐掉日历控件。


protected override void WndProc(ref Message m)
{
if (m.Msg == 0x210)
{
//鼠标down
}
base.WndProc(ref m);
}
yjsyjs1189 2010-12-02
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 rojj_97 的回复:]
写WINFORM不知道什么是消息机制?看看书吧。
[/Quote]

这种人...人家LZ是新手,既然你明白你怎么不教教人家?

我看你就是个绣花枕头吧,还来这里装!~~~
戒指 2010-12-02
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 fanglei10 的回复:]

以上都对!!!!
[/Quote]

晕~~ 上面所有的代码我都试过了,只是在点击窗体的时候会隐藏,但是我的窗体上有很多控件,点击这些控件的时候就隐藏不了! 难道要在每一个控件的事件里都添加让其隐藏的代码么?
fanglei10 2010-12-02
  • 打赏
  • 举报
回复
以上都对!!!!
戒指 2010-12-02
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 biancheng1000 的回复:]

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

你也在学习这个呀~ 呵呵!

唉,这里的C#高手好像特别的少啊!
biancheng1000 2010-12-02
  • 打赏
  • 举报
回复
高手给贴个C#实现的最简单的HOOK例子,新手学习
戒指 2010-12-02
  • 打赏
  • 举报
回复
戒指 2010-12-02
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 rojj_97 的回复:]
写WINFORM不知道什么是消息机制?看看书吧。
[/Quote]

晕!~ 我要是会的话就不是新手了!! 都些什么人呐! 以为会点东西了不起么?
加载更多回复(10)

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧