35 lines
900 B
C#
Executable File

// build@ csc /debug /nologo /target:library TextBox.cs
using System;
using System.Windows.Forms;
using System.Drawing;
namespace TextBox {
public delegate bool SpecialKeyHandler(Keys key);
class ConsoleTextBox : RichTextBox {
public SpecialKeyHandler handler;
protected const int WM_KEYDOWN = 0x0100;
public void SetHandler(SpecialKeyHandler handler_) {
handler = handler_;
}
public override bool PreProcessMessage(ref Message msg) {
if (msg.Msg == WM_KEYDOWN) {
Keys keyData = ((Keys) (int) msg.WParam) | ModifierKeys;
if (keyData == Keys.Enter || keyData == Keys.Escape || keyData == Keys.Tab ||
keyData == Keys.Up || keyData == Keys.Down )
{
if (handler(keyData)) {
return true;
}
}
}
return base.PreProcessMessage(ref msg);
}
}
}