【问题标题】:how to display the number of letters in alphabet in label while typing in the textbox在文本框中键入时如何在标签中显示字母表中的字母数
【发布时间】:2016-07-04 16:37:43
【问题描述】:

我正在尝试制作一个程序,每当您在文本框中键入一个字母时,字母表中字母的编号就会出现在标签中...... 我试过一些这样的代码:

 private void textBox1_TextChanged(object sender, EventArgs e)
        {
            string userInput = textBox1.Text;
            char charCount;
            charCount = userInput[0];

            label1 = charCount.Length.ToString();
        }

但我找不到我的问题的解决方案.....

我会很感激我能得到的帮助....

【问题讨论】:

  • label1.Text = textBox1.Text.Lengrh.ToString(); 显示输入长度而不是“字母长度”并假设 label1 是 Winforms 标签
  • 无论您输入哪个字母,它始终是 26。
  • 您想要最后一个字母的编号,例如 A == 1, B == 2 ... Z == 26?
  • ^ 是的,我想要这样的输出......

标签: c#


【解决方案1】:

在字母表中显示字母位置。

private void textBox1_TextChanged(object sender, EventArgs e)
{
    string userInput = textBox1.Text;            //get string from textbox
    if(string.IsNullOrEmpty(userInput)) return;  //return if string is empty
    char c = char.ToUpper(userInput[userInput.Length - 1]); //get last char of string and normalize it to big letter
    int alPos = c-'A'+1;                         //subtract from char first alphabet letter

    label1 = alPos.ToString();                   //print/show letter position in alphabet
}

【讨论】:

  • 嗨洛格曼,感谢您的帮助!对我的项目真的很有帮助!
  • @JanChristopherSantos 很高兴为您提供帮助。如果您对我的回答感到满意,请将其标记为已接受。
【解决方案2】:

首先,您需要找到一个事件,即当您更改文本框中的文本时触发。例如 KeyUp。然后你需要使用这样的代码向它注册一个函数。

your_textbox.KeyUp += your_textbox_KeyUp;

Visual Studio 将通过创建一个空函数来帮助您。

函数应该如下所示:

private void your_textbox_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
    your_label.Content = your_textbox.Text.Length.ToString();
}

your_label.Content 是要在标签中显示的属性,右侧的术语将获取文本框中文本的长度。

如果您希望标签不仅显示数字,而且将其包装在文本中,请使用 String.Format 如下:

your_label.Content = String.Format("The text is {0} characters long", your_textbox.Text.Length);

我的答案是针对 WPF。如果您使用的是 WinForms,某些关键字可能会有所不同。

【讨论】:

    【解决方案3】:

    我相信你只想要文本框中写的字母(字母)的数量,这里有一个简单的代码:

    private void textbox_TextChanged(object sender, EventArgs e)
    {
        int i = 0;
        foreach (char c in textbox.Text)
        {
            int ascii = (int)c;
            if ((ascii >= 97 && <= 122) || (ascii >= 65 && ascii <= 90)) // a to z or A to Z
                i++;
        }
    
        label1.Text = i.ToString();
    }
    

    更简单的代码:

    private void textbox_TextChanged(object sender, EventArgs e)
    {
        int i = 0;
        foreach (char c in textbox.Text)
            if (char.IsLetter(c))
                i++;
    
        label1.Text = i.ToString();
    }
    

    【讨论】:

      【解决方案4】:

      如果您要查找文本框中不同字母的数量,您可以使用:

      textbox.Text.ToUpper().Where(char.IsLetter).Distinct().Count();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-09
        • 1970-01-01
        相关资源
        最近更新 更多