文本框中留下的字符C#

时间:2015-01-17 00:31:53

标签: c# winforms textbox

所以我到处都看了,我找到了很多答案,这些答案几乎都是一样的。有些已经在C#中,有些已经在ASP.NET中,但它们都没有工作。

这是我的问题。我有一个文本框,我也有一个标签。我的文本框允许用户在文本框中输入500个字符,我希望标签说明用户剩下的字符数。我认为这很容易做到,但没有任何工作!所以这是我到目前为止所得到的:

我想要显示字符的标签叫做lblAboutCount,文本框是txtAbout。

private void txtAbout_TextChanged(object sender, EventArgs e)
{
  var max = txtAbout.MaxLength;
  var length = txtAbout.Text.Length;
  var total = max - length;

  lblAboutCount.Text = total.ToString(); 
}

我已将代码放在TextChanged,KeyPress和KeyUp事件中,但没有一个工作。我也有表格的开头:

lblAboutCount.Text = txtAbout.MaxLength.ToString()

我不知道我做错了什么!!

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

我可以验证这是否符合预期。

您的部分类(Designer>查看代码)

中有此行
this.txtAbout.TextChanged += new System.EventHandler(this.txtAbout_TextChanged);

不是吗?

答案 1 :(得分:0)

因此,经过几个小时的思考而没有得​​到正确的答案,我想到了我正在使用的实际文本框。我在我的表单上使用主题,主题包含我需要的所有元素,如文本框,复选框,标签等。

所以我删除了主题文本框并放置了一个普通的文本框,并按照我向您展示的确切代码进行了操作,并且没有任何问题。我从来没有想过要告诉你们关于文本框的事情,因为在代码中文本框继承了文本框,所以我认为它只是一个普通的文本框而且不会影响它。对不起,大家都有问题!

这应该有助于其他使用主题并且遇到类似问题的人。在用户输入之前,我也无法更改文本框的背景颜色,直到我使用普通文本框。

答案 2 :(得分:0)

晚会但是未来的寻求者:

您可能需要考虑使用TextChanging事件而不是TextChanged。这样,您不仅可以更新标签以显示剩余的字符数,还可以设置e.Cancel = true以禁止输入超出所需限制的任何文本。像这样......

        if (txtTitle.Text.Length > 80)
            e.Cancel = true;
        else
            lblTitleCharsLeft.Text = $"({80 - txtTitle.Text.Length} chars left)";