Tag: textchanged

为什么这不会造成无限的事件循环呢?

我有一个简单的应用程序,反转任何文本input到另一个文本框中。 问题是,你可以修改任何一个文本框,这些改变将会被(反过来)反映在另一个文本框中。 我写这个代码,相信会导致问题。 private void realText_TextChanged(object sender, EventArgs e) { mirrorText.Text = mirror(realText.Text); } private void mirrorText_TextChanged(object sender, EventArgs e) { realText.Text = mirror(mirrorText.Text); } private string mirror(string text) { return new string(text.Reverse().ToArray()).Replace("\n\r", "\r\n"); } 然后我试了一下,认为它会导致无限循环( realText更改mirrorText ,另一个事件发生, mirrorText更改realText等)。 然而,除了预期的行为发生之外, 我当然很高兴,我可以把它留在这里。 或者我可以吗? 我很确定TextChanged事件应该被触发,每当Text被改变。 这是事件中一些错误保护的预期行为,还是我只是幸运? 这个代码可能在其他计算机上运行不正常,还有其他的编译设置等? 它可以很容易地修复: private void realText_TextChanged(object sender, EventArgs e) { if (realText.Focused) […]