我有两个(并且会更多,但是对于这个例子,我将它保留为两个)文本框,我想将字符数统计为一个标签。
我有两个文本框叫做probDescTextbox和stepsToRepoTextbox。
我正在使用winforms和TextChanged事件。我不确定是否有办法让这个工作没有多个TextChanged事件,但如果我嵌套它我得到一个错误,如果我做第二个,我似乎无法得到数字添加。
CODE:
private void probDescTextBox_TextChanged(object sender, EventArgs e)
{
int probDescLimit = probDescTextBox.Text.Length;
int stepsToRepoLimit = stepsToRepoTextBox.Text.Length;
int charLimit = probDescLimit + stepsToRepoLimit;
if (charLimit >= 50)
{
probDescCharLabel.ForeColor = Color.Red;
probDescCharLabel.Text = charLimit.ToString() + " Over Limit!!";
}
else
{
probDescCharLabel.ForeColor = Color.Black;
probDescCharLabel.Text = charLimit.ToString();
}
}
我确信这很简单,但我找不到使用多个文本框的示例。
提前致谢。
答案 0 :(得分:2)
您可以将文本更改事件连接到同一个处理程序。
修改强>
1。)将事件处理程序的名称更改为更通用的名称,以便您知道它不是probDescTextBox
特有的:
private void note_TextChanged(object sender, EventArgs e)
{
//Same code as you have above, or see note...
}
注意:如果您需要知道哪个文本框触发了该事件,请参阅答案here。您可以检查发件人。这将允许您仅设置触发事件的文本框的前景色。
2.。)在表单的构造函数中连接事件处理程序,如下所示,或者如果您正在使用设计器,请更改每个文本框的属性窗口中的值:
public MyForm()
{
//wire each textbox's TextChanged event to the same handler
probDescTextBox.TextChanged += note_TextChanged;
stepsToRepoTextbox.TextChanged += note_TextChanged;
}