所以我到处都看了,我找到了很多答案,这些答案几乎都是一样的。有些已经在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()
我不知道我做错了什么!!
提前感谢您的帮助!
答案 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)";