如何防止TextBox接受Unicode控制字符?

时间:2011-07-05 15:20:17

标签: c# winforms

我有不希望最终用户向Windows.Forms.TextBox输入Unicode控制字符的场景,如您右键单击TextBox,将显示上下文菜单并显示最后一个菜单项此上下文菜单是“Insert Unicode control character->”,它可以在TextBox中插入一些Unicode控制字符。

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

3 个答案:

答案 0 :(得分:1)

即使您禁用此上下文菜单条目,用户仍然可以使用copy&amp ;;输入所有类型的奇怪字符。粘贴或使用Alt-Numpad。如果您想严格限制输入,例如A-Z,则可以使用MaskedTextBox控件。

如果需要更细粒度的控件,可以处理TextBox.KeyPress事件。这个技术的一个例子可以在以下SO问题中找到:

答案 1 :(得分:1)

覆盖您的文本框ContextMenu

设计您拥有ContextMenu并仅实现您想要的功能。然后将contextMenu分配给您的textBoxmyTextBox.ContextMenu = myContextMenu;

答案 2 :(得分:1)

添加到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;