如何在文本框中键入时显示标签中字母的数量

时间:2016-07-04 16:37:43

标签: c#

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

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

            label1 = charCount.Length.ToString();
        }

但我无法找到解决问题的方法.....

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

4 个答案:

答案 0 :(得分:0)

首先,当文本框中的文本发生变化时,您需要找到一个触发的事件。例如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,则某些关键字可能会有所不同。

答案 1 :(得分:0)

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

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();
}

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

以字母显示字母位置。

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
}