はい、KeyPress イベントが必要です。というか、OnKeyPress をオーバーライドします。KeyDown イベントの仮想キー コードをキー ストロークにマッピングするのは非常に難しく、現在のキーボード レイアウトを認識しておく必要があります。ToUnicodeEx()のMSDN ドキュメントを見て、何に直面しているかを確認してください。
Alt+L のようなキーストロークの組み合わせを気にする必要はありません。KeyPress イベントを生成しません。
これが例です。新しい Windows フォーム プロジェクトを開始し、コードを次のようにします。
using System;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
StringBuilder mText = new StringBuilder();
protected override void OnKeyPress(KeyPressEventArgs e) {
if (e.KeyChar == '\b') {
if (mText.Length > 0) mText.Remove(mText.Length - 1, 1);
}
else mText.Append(e.KeyChar);
Invalidate();
}
protected override void OnPaint(PaintEventArgs e) {
TextFormatFlags fmt = TextFormatFlags.Left;
TextRenderer.DrawText(e.Graphics, mText.ToString(), this.Font, this.ClientRectangle, Color.Black, fmt);
}
}
}