急,急,急!WinForm-C#问题!! 在一个窗体上放一个MonthCalendar控件,怎么实现点击窗体上任何一个位置就隐藏MonthCalendar控件呢?求大神出手指教! 有例子代码最好! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 添加这个主窗体事件,即可 private void Form1_MouseClick(object sender, MouseEventArgs e) { monthCalendar1.Visible = false; } } "怎么实现点击窗体上任何一个位置"可能要用到“HOOK”监控鼠标,才可能满足。 怎么HOOK呢? 如果窗体上还有其他很多控件的话怎么办? protected override void WndProc(ref Message m) { if (monthCalendar1.Visible) { if (m.Msg >= 0x0201 && m.Msg <= 0x0209) { monthCalendar1.Visible = false; } } base.WndProc(ref m); } 其实好几种方法,看你怎么用看看我楼上的实现方法,只能算一种方式。没测试,好象可以PASS 可以PASS啊.. 那你给我来个不PASS的让我学习一下呗!! 写WINFORM不知道什么是消息机制?看看书吧。 高手给贴个C#实现的最简单的HOOK例子,新手学习 重写消息处理方法,在鼠标down的消息里,判断句柄是否是日历的,不是就直接隐掉日历控件。 protected override void WndProc(ref Message m) { if (m.Msg == 0x210) { //鼠标down } base.WndProc(ref m); } 不好意思,原来是我自己没测试过 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; } } 问题是可以让控件隐藏了,可是日期选择不了,点击MonthCalendar控件的"上一个月"那个按钮的时候它也隐藏了 - -! 这个比较纠结,怎么能改一下呢? c# c# winform问题 一个关于从1到100的加法算法 菜鸟问题:怎么样区别函数与方法? c#入门问题,多谢! 实现一个字串特效显示控件,闪个不停怎么办??? 对于大家来说很简单的问题,为什么点击按钮不显示新页面?无关代码可不看。 datagridview中datagridviewcheckcolumn的用法 C#如何使用Respones? 怎么把二进制文件读入到一个结构体? 关于trim函数求教 关于winform的media player 播放速度的问题
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
monthCalendar1.Visible = false;
}
}
怎么HOOK呢? 如果窗体上还有其他很多控件的话怎么办?
{
if (monthCalendar1.Visible)
{
if (m.Msg >= 0x0201 && m.Msg <= 0x0209)
{
monthCalendar1.Visible = false;
}
}
base.WndProc(ref m);
}
看看我楼上的实现方法,只能算一种方式。没测试,好象可以PASS
可以PASS啊.. 那你给我来个不PASS的让我学习一下呗!!
写WINFORM不知道什么是消息机制?看看书吧。
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x210)
{
//鼠标down
}
base.WndProc(ref m);
}
{
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;
}
}