在通过用户输入或编程方式更改值之前,我无法在文本框中获取值。我想这与_TextChanged事件有关,但是一旦执行了这个事件,我如何获得在更改之前已经存在的旧值?例如,数字3位于文本字段中。然后数字变为4如何保存3?提前感谢!
_TextChanged
3
4
0sgqnhkj1#
不要在TextBox中存储任何内容。仅用于显示/编辑value。
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?只是为了向你展示,拥有“旧价值”的概念可能会带来什么问题。也许你不想要它,有更好的解决方案,你试图解决的旧价值。
TextChanged
Tag
54
34
tzdcorbm2#
为什么不在textchanged事件期间将文本框中的当前值保存保存在一个变量中。这样,当再次触发事件时,它就是“前一个”值。
oxiaedzo3#
你可以保存文本框的值在一些变量中。例如字符串currentVal = txtName.Text;字符串currentVal可以用作text_changed事件中的前一个值。
iyzzxitl4#
你试过做计时器吗?每一个tick都把输入写入一个字符串。如果文本框的输入不等于字符串中的内容,则触发您想要执行的操作。这样就可以用旧的输入触发一个void。
private string oldInput; .... void TimerTick(Object source, ElapsedEventArgs e) { if (oldInput != MyTextBox.Text) MyVoid(oldInput); oldInput = MyTextBox.Text; }
4条答案
按热度按时间0sgqnhkj1#
不要在
TextBox
中存储任何内容。仅用于显示/编辑value
。也许你不想在每个
TextChanged
之后更新value
。也许你会这样做时,形式是关闭的,一些按钮被按下,等等。总之,思路要明确:如果你需要旧值,那就自己把它存储在某个地方(作为变量、
Tag
、应用程序设置、导出等)。另外,要注意用户如何工作。如果
TextBox
包含3
,则用户可以先按4
,然后才删除3
。或者用户可能意外按下54
。其中哪些将是 * 旧 * 值:3
,34
,54
?只是为了向你展示,拥有“旧价值”的概念可能会带来什么问题。也许你不想要它,有更好的解决方案,你试图解决的旧价值。tzdcorbm2#
为什么不在textchanged事件期间将文本框中的当前值保存保存在一个变量中。这样,当再次触发事件时,它就是“前一个”值。
oxiaedzo3#
你可以保存文本框的值在一些变量中。例如字符串currentVal = txtName.Text;
字符串currentVal可以用作text_changed事件中的前一个值。
iyzzxitl4#
你试过做计时器吗?每一个tick都把输入写入一个字符串。如果文本框的输入不等于字符串中的内容,则触发您想要执行的操作。这样就可以用旧的输入触发一个void。