c# - 在更改之前获取值

标签 c# winforms textfield onchange

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

我认为它与 _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。以下哪些是值:33454?只是为了向您展示,拥有旧值(value)的概念可能会导致什么问题。也许您不想要它,并且有更好的解决方案来解决您试图通过获取旧值来解决的问题。

关于c# - 在更改之前获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25865863/

相关文章:

winforms - 在 Winforms for Vista 中为 MessageBox.Show(...) 格式化消息的最佳实践

ios - Mac Catalyst 文本框第一响应者

c# - Response.Write过时了?

c# - 存储库模式 - 摘要信息

c# - .NET/C#中如何在右键菜单上绘制?

ios - 点击 TextField 重置 View 位置

reactjs - React useRef 不适用于 Material UI TextField

c# - 如何获取 visual studio 使用的 clickonce 构建脚本来发布我的应用程序

C#:进行 SOAP 调用时如何使用 HTTP 身份验证?

.net - WPF中的MethodInvoker?