C# 如何使文本框只接受a-z而不接受其他内容?

C# 如何使文本框只接受a-z而不接受其他内容?,c#,winforms,textbox,masking,C#,Winforms,Textbox,Masking,我在Windows窗体中有4个文本框。我想将其更改为只接受字母a到z,而不接受其他任何内容,即使粘贴内容也是如此。如果用户混合粘贴字母和不需要的字符,则文本框中只应显示字母 我最不想要的是numlock垫。这些数字与键盘顶部的数字行相同,但我希望它们也能阻止它们 我很确定应该有这样的语法:; var isAlpha=char.isleter('text') 您所需要做的就是实现文本框的语法,如图所示; var isAlpha=textbox.char.isleter('text')我很确定应该有

我在Windows窗体中有4个文本框。我想将其更改为只接受字母a到z,而不接受其他任何内容,即使粘贴内容也是如此。如果用户混合粘贴字母和不需要的字符,则文本框中只应显示字母


我最不想要的是numlock垫。这些数字与键盘顶部的数字行相同,但我希望它们也能阻止它们

我很确定应该有这样的语法:;
var isAlpha=char.isleter('text')
您所需要做的就是实现文本框的语法,如图所示;

var isAlpha=textbox.char.isleter('text')

我很确定应该有一些类似的语法;
var isAlpha=char.isleter('text')
您所需要做的就是实现文本框的语法,如图所示;

var isAlpha=textbox.char.isleter('text')
string str = "a string with some CAP letters and 123numbers";
void Start(){
    string result = KeepaToz(str);
    Debug.Log(result); // print "astringwithsomelettersandnumbers"
}
string KeepaToz(string input){
   StringBuilder sb = new StringBuilder();
   foreach(char c in str){
       if(c >= 97 && c<= 122){ sb.Append(c); }
   }
   return sb.ToString();
}
string str=“带有一些大写字母和数字的字符串”;
void Start(){
字符串结果=KeepaToz(str);
Debug.Log(结果);//打印“astringwithsomelettersandnumbers”
}
字符串KeepaToz(字符串输入){
StringBuilder sb=新的StringBuilder();
foreach(str中的字符c){

如果ASCII表a-z中的(c>=97&&c为表格97至122:

string str = "a string with some CAP letters and 123numbers";
void Start(){
    string result = KeepaToz(str);
    Debug.Log(result); // print "astringwithsomelettersandnumbers"
}
string KeepaToz(string input){
   StringBuilder sb = new StringBuilder();
   foreach(char c in str){
       if(c >= 97 && c<= 122){ sb.Append(c); }
   }
   return sb.ToString();
}
string str=“带有一些大写字母和数字的字符串”;
void Start(){
字符串结果=KeepaToz(str);
Debug.Log(结果);//打印“astringwithsomelettersandnumbers”
}
字符串KeepaToz(字符串输入){
StringBuilder sb=新的StringBuilder();
foreach(str中的字符c){

如果(c>=97&&c我想引入一个从
TextBox
派生的自定义控件,类似于:

公共类字母TextBox:TextBox
{
按键时受保护的覆盖无效(按键事件参数e)
{
按键(e);
字符串c=e.KeyChar.ToString();
if(e.KeyChar>='a'&&e.KeyChar c<'a'| c>'z'))
{

如果(text.Any)(c=>c>='a'| | c>='a'&&c,我想引入一个从
TextBox
派生的自定义控件,类似于:

公共类字母TextBox:TextBox
{
按键时受保护的覆盖无效(按键事件参数e)
{
按键(e);
字符串c=e.KeyChar.ToString();
if(e.KeyChar>='a'&&e.KeyChar c<'a'| c>'z'))
{

如果(text.Any)(c=>c>='a'| c>='a'&&c使用
TextChanged
事件。类似于:

// Set which characters you allow here
private bool IsCharAllowed(char c)
{
    return (c >= 'a' && c <= 'z')
}    

private bool _parsingText = false;
private void textBox1_TextChanged(object sender, EventArgs e)
{
    // if we changed the text from within this event, don't do anything
    if(_parsingText) return;

    var textBox = sender as TextBox;
    if(textBox == null) return;

    // if the string contains any not allowed characters
    if(textBox.Text.Any(x => !IsCharAllowed(x))
    {        
      // make sure we don't reenter this when changing the textbox's text
      _parsingText = true;
      // create a new string with only the allowed chars
      textBox.Text = new string(textBox.Text.Where(IsCharAllowed).ToArray());         
      _parsingText = false;
    }
}
//在此处设置允许的字符
不允许使用私有布尔值(字符c)
{

return(c>='a'&&c使用
TextChanged
事件。类似于:

// Set which characters you allow here
private bool IsCharAllowed(char c)
{
    return (c >= 'a' && c <= 'z')
}    

private bool _parsingText = false;
private void textBox1_TextChanged(object sender, EventArgs e)
{
    // if we changed the text from within this event, don't do anything
    if(_parsingText) return;

    var textBox = sender as TextBox;
    if(textBox == null) return;

    // if the string contains any not allowed characters
    if(textBox.Text.Any(x => !IsCharAllowed(x))
    {        
      // make sure we don't reenter this when changing the textbox's text
      _parsingText = true;
      // create a new string with only the allowed chars
      textBox.Text = new string(textBox.Text.Where(IsCharAllowed).ToArray());         
      _parsingText = false;
    }
}
//在此处设置允许的字符
不允许使用私有布尔值(字符c)
{


返回(c>='a'&&c当从键盘输入时,您只能过滤进入文本框的数据。您不能阻止某人将数据粘贴到文本框。您可以使用
MaskedTextBox
并将属性设置为合适的掩码。当从键盘输入时,您只能过滤进入文本框的数据。您不能阻止某人将数据粘贴到文本框您可以使用
MaskedTextBox
并将属性设置为合适的掩码。我是一个新手,但我以前使用过它,它工作了。这可能会,但问题不是检测字符串的内容,而是删除不需要的字符。我是一个新手,但我以前使用过它,它工作了。这可能会解决问题不是检测字符串的内容,而是删除不需要的字符。我意识到我假设它是为了Unity…但是该方法在任何情况下都应该是一样的。我意识到我假设它是为了Unity…但是该方法在任何情况下都应该是一样的。当前contex中不存在名称“SelectedText”t?@Donovan这很奇怪。这是WinForms的TextBox.Idk的一个属性,这是VS所说的。@Donovan你继承的正是
System.Windows.Forms.TextBox
?它应该有这个属性-嗯..我应该在哪里添加它?名称“SelectedText”在当前上下文中不存在?@Donovan这很奇怪。它是WinForms文本的一个属性Box.Idk,这是VS说的。@Donovan你继承了System.Windows.Forms.TextBox吗?它应该有这个属性-嗯..我应该在哪里添加这个?