在更改之前获取值

rav*_*x30 3 c# onchange textfield winforms

在通过用户输入或以编程方式更改值之前,我无法在文本框中获取值。

我认为它与_TextChanged事件有关,但是一旦执行此操作,我该如何获取更改之前已经存在的旧值?

例如数字3在文本字段中。数字然后更改为4如何保存3

提前致谢!

Sin*_*atr 5

不要在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
}
Run Code Online (Sandbox Code Playgroud)

也许您不想value在每个TextChanged. 也许您会在关闭表单、按下某个按钮等时执行此操作。

无论如何,想法应该很清楚:如果您需要拥有旧值,则将其存储在自己的某个地方(作为变量、作为Tag、作为应用程序设置、导出等)。

另外,请注意用户的工作方式。如果TextBox包含3,则用户可以先按4然后再删除3。否则用户可能会不小心按下54。其中哪些将是值:3, 34, 54?只是为了向您展示,拥有旧值的概念可能会带来什么问题。也许您不想要它,并且通过获取旧值来解决您要解决的问题有更好的解决方案。