在通过用户输入或以编程方式更改值之前,我无法在文本框中获取值。
我认为它与 _TextChanged
事件有关,但是一旦执行此事件,我如何获得更改前已经存在的旧值?
例如,数字 3
在文本字段中。然后数字变为 4
如何保存 3
?
提前致谢!
最佳答案
不要在 TextBox
中存储任何内容。仅使用它来显示/编辑 value
。
private string value;
private void textBox1_TextChanged(object sender, EventArgs e)
{
// at this moment value is still old
var oldValue = value;
value = ((TextBox)sender).Text; // text1.Text
// here you have oldValue and new value
}
也许您不想在每次 TextChanged
后更新 value
。也许您会在关闭表单、按下某个按钮等时执行此操作。
无论如何,想法应该很清楚:如果您需要旧值,则将其存储在自己的某个地方(作为变量、作为 Tag
、作为应用程序设置、导出等)。
此外,请注意用户的工作方式。如果 TextBox
包含 3
,则用户可以先按 4
,然后才删除 3
。或者用户可能不小心按下了 54
。以下哪些是旧值:3
、34
、54
?只是为了向您展示,拥有旧值(value)的概念可能会导致什么问题。也许您不想要它,并且有更好的解决方案来解决您试图通过获取旧值来解决的问题。
关于c# - 在更改之前获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25865863/