日期:2014-05-19  浏览次数:20898 次

日期控件的奇怪问题
现在窗体上写了keydown事件,上下键的时候到下一控件
我想要屏蔽上下键时日期控件的之改变
就是直接到下一个控件,而日期控件的值不变

我得方法是在窗体keydown事件中判断当前控件是日期控件时
send{up}或send{down}把值重新变回来,
现状是如果有一个日期控件的话没有问题
可是如果是连续2个日期控件的时候,2个控件的值都变化

有没有办法直接把日期控件的上下键改变值给屏蔽掉?

或者其他方法?

我也曾尝试过日期控件chang获取值
leave的时候再给放回去
可是同样不好用,怀疑几个控件之间的事件触发顺序问题

很急啊,帮帮忙!!!

------解决方案--------------------
public class SubWindow : NativeWindow
{
protected override void WndProc(ref Message m)
{
const int WM_KEYDOWN = 0x0100;
switch (m.Msg)
{
case WM_KEYDOWN:
switch((int)m.WParam)
{
case (int)Keys.Up:
case (int)Keys.Down:
return;
}
break;
}
base.WndProc(ref m);
}
}

private void Form1_Load(object sender, EventArgs e)
{
SubWindow vSubWindow = new SubWindow();
vSubWindow.AssignHandle(monthCalendar1.Handle);
}

------解决方案--------------------
mark for this " WndProc(ref Message m) ",i never used before,but it is very good.