运行环境:Win10 x64, NetFrameWork 4.8, 做者:乌龙哈里,日期:2019-05-01
fetch
TextBox txbx=new TextBox(); InputMethod.SetIsInputMethodEnabled(txbx, false);//关掉输入法
//把输入改为 overwrite 模式 // fetch TextEditor from myTextBox TextBox txbx=new TextBox(); PropertyInfo textEditorProperty = typeof(TextBox).GetProperty("TextEditor", BindingFlags.NonPublic | BindingFlags.Instance); object textEditor = textEditorProperty.GetValue(txbx, null); // set _OvertypeMode on the TextEditor PropertyInfo overtypeModeProperty = textEditor.GetType().GetProperty("_OvertypeMode", BindingFlags.NonPublic | BindingFlags.Instance); overtypeModeProperty.SetValue(textEditor, true, null);
在 KeyDown 事件里利用 SelectionStart 来设定,下面例子是限定2个字符
spa
private void TextBox_KeyDown(object sender, KeyEventArgs e) { TextBox txbx = sender as TextBox; //只能有两个字符 if (txbx.SelectionStart < 2) { e.Handled = false;//false才能经过 } else { e.Handled = true; } }