以前从来没有写日志的习惯,可是突然发现有些东西是要记录的。
当我有要记录读这本书的时候,很不幸我已经到120页了。要是把以前读过的记下来有多好,这样可以想起很多有用的技术。不过现在开始。也不晚。
protected override bool ProcessKeyEventArgs(ref Message m)
{
int keyValue = m.WParam.ToInt32();
// (keyValue > 47 && keyValue <58) ?Numbers 0 ?9
// keyValue == 46 - Decimal point
// (keyValue > 34 && keyValue <41) ?Home, End, and Arrow Keys
// keyValue == 8 ?Backspace Key
if ((keyValue > 47 && keyValue <58) || keyValue == 46 || (keyValue > 34 && keyValue <41) || keyValue == 8)
{
return base.ProcessKeyPreview(ref m);
}
else
{
// Delete Key
if (m.Msg == 256 && keyValue == 46)
{
return base.ProcessKeyPreview(ref m);
}
// Windows message id used to limit 1 beep per keystroke
if (m.Msg == 258)
{
MessageBeep(0);
}
return true;
}
}
当我有要记录读这本书的时候,很不幸我已经到120页了。要是把以前读过的记下来有多好,这样可以想起很多有用的技术。不过现在开始。也不晚。
protected override bool ProcessKeyEventArgs(ref Message m)
{
int keyValue = m.WParam.ToInt32();
// (keyValue > 47 && keyValue <58) ?Numbers 0 ?9
// keyValue == 46 - Decimal point
// (keyValue > 34 && keyValue <41) ?Home, End, and Arrow Keys
// keyValue == 8 ?Backspace Key
if ((keyValue > 47 && keyValue <58) || keyValue == 46 || (keyValue > 34 && keyValue <41) || keyValue == 8)
{
return base.ProcessKeyPreview(ref m);
}
else
{
// Delete Key
if (m.Msg == 256 && keyValue == 46)
{
return base.ProcessKeyPreview(ref m);
}
// Windows message id used to limit 1 beep per keystroke
if (m.Msg == 258)
{
MessageBeep(0);
}
return true;
}
}
这里要说明几点:
(1):为了能够在用户输入错误的类型时发出“嘟”声。用到了windows API ,引用user32.dll库并声明外部方法。messageBeep,该访求中的unit 参数是无符号的整数,它来决定系统播放的波形文件。十六进制表示。
H0:系统默认的声音
H40:system asterisk
还有其它的参数,不记了以后找到手册查
[DllImport("user32.dll")]
private static extern bool MessageBeep(uint uType);
2:在顶部那个方法是重写了TextBox中的PreProcessMessage 方法,当然textbox是从Control继承来的。
3:KeyValue代表从键盘输入的值,