如何防止文本框接受Unicode控制字符

本文关键字:Unicode 控制字符 何防止 文本 | 更新日期: 2023-09-27 18:01:19

我有一些场景不希望最终用户向Windows.Forms输入Unicode控制字符。TextBox,正如你可能知道的,如果你右键单击一个文本框,将显示一个上下文菜单,该上下文菜单上的最后一个菜单项是"插入Unicode控制字符->",它可以插入一些Unicode控制字符到文本框。

有没有人知道如何禁用或隐藏这些菜单->"插入Unicode控制字符","显示Unicode控制字符"。

如何防止文本框接受Unicode控制字符

即使禁用此上下文菜单项,用户仍然可以使用copy &粘贴或使用Alt-Numpad。如果你想严格限制你的输入,比如说,a - z,你可以使用一个MaskedTextBox控件。

如果你需要更细粒度的控制,你可以处理TextBox。键盘按键事件。这个技巧的一个例子可以在下面的SO问题中找到:

  • 如何制作一个只接受数字的文本框?

对于Jalal的回答,

var contextMenu = new ContextMenu();
contextMenu.MenuItems.Add(new MenuItem("Copy", (s, ea) => textBox1.Copy()));
contextMenu.MenuItems.Add(new MenuItem("Paste", (s, ea) => textBox1.Paste()));
contextMenu.MenuItems.Add(new MenuItem("Undo", (s, ea) => textBox1.Undo()));
contextMenu.MenuItems.Add(new MenuItem("Select All", (s, ea) => textBox1.SelectAll()));
....
textBox1.ContextMenu = contextMenu;

覆盖您的文本框ContextMenu

设计你自己的ContextMenu,只实现你想要的功能。然后将contextMenu分配给textBox: myTextBox.ContextMenu = myContextMenu;