首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >文本框中仅允许字母数字

文本框中仅允许字母数字
EN

Stack Overflow用户
提问于 2009-05-26 10:45:54
回答 13查看 62.4K关注 0票数 17

我有一个文本框,不允许输入任何特殊字符。

用户可以输入:

  1. A-Z
  2. a-z
  3. 0-9
  4. Space

怎样才能让KeyDown事件做到这一点呢?

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2009-07-28 03:51:11

代码语言:javascript
复制
private void _txtPath_KeyDown(object sender, KeyEventArgs e)
  {
     if ((e.Key < Key.A) || (e.Key > Key.Z))
        e.Handled = true;
  }
票数 3
EN

Stack Overflow用户

发布于 2009-05-26 11:11:46

处理KeyDown或KeyPress事件是实现此目的的一种方法,但是程序员通常会忘记,用户仍然可以将无效文本复制粘贴到文本框中。

一种更好的方法是处理TextChanged事件,并去掉那里的任何有问题的字符。这有点复杂,因为您必须跟踪插入符号的位置,并在更改框的Text属性后将其重新设置到适当的位置。

根据您的应用程序的需要,我只需要让用户输入他们想要的内容,然后在用户尝试提交时标记文本框(将文本变为红色或其他什么)。

票数 31
EN

Stack Overflow用户

发布于 2014-03-13 23:08:18

我只想为那些通过搜索结束的人添加一些代码:

代码语言:javascript
复制
private void Filter_TextChanged(object sender, EventArgs e)
{
    var textboxSender = (TextBox)sender;
    var cursorPosition = textboxSender.SelectionStart;
    textboxSender.Text = Regex.Replace(textboxSender.Text, "[^0-9a-zA-Z ]", "");
    textboxSender.SelectionStart = cursorPosition;
}

这是一个更改过滤器,因此可以处理复制和粘贴,并保留光标位置,以便在中间更改文本正常工作。

注意,它使用'sender‘来获取控件名称,允许这一个函数链接到多个文本框,假设它们需要相同的过滤器。您可以通过转到控件的事件部分并手动选择TextChanged事件的函数来链接多个控件。

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/910063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档