如何强制文本框更新其文本

Posted

技术标签:

【中文标题】如何强制文本框更新其文本【英文标题】:How to force a textbox to update its text 【发布时间】:2013-09-16 03:45:37 【问题描述】:

所以我已经浏览了大约 5 到 10 个关于 *** 的关于使用一系列命令将文本设置到文本框中的问题。我已经尝试过 SetWindowText、带有 EM_SETSEL 和 EM_REPLACESEL 的 SendMessage,以及其他一些我想不出来的东西。大部分情况下,我都是成功的,除了一件奇怪的事情。

当我设置这个特定文本框的文本时,什么都没有出现,没有任何变化。起初我以为我没有正确设置数据。但是,当我使用 Spy++ 或 Winspector 查看文本框的文本时,我所做的更改的正确数据在那里,但未显示在实际的文本框中。更奇怪的是,当我用我“编辑”的文本框点击返回表单时,spy++ 和 Winspector 的数据会更改为文本框显示的内容。

我和我的一个朋友谈过,他提到这可能是一种比赛条件。我正在尝试编辑此框,并且该文本框也正在由其他线程编辑。

如果有人有任何建议,我将不胜感激。

编辑:好的,所以我对导致文本变回问题的原因进行了更多挖掘。我打开 Winspector 并让它观看文本框。从那里我能够识别在文本数据最后一次正确到第一次更改之间发送到窗口的消息。我也将结果导出到带有参数的 xml 文档,但它大约有 680 行长。

以下是消息列表: http://i.imgur.com/SBCFHK8.png

【问题讨论】:

您是否尝试在控件上调用InvalidateRect?它可能只需要重新绘制。 【参考方案1】:

控件可能只需要重新绘制自己。

您可以尝试两个 API 来做到这一点:

InvalidateRect - PInvoke RedrawWindow - PInvoke

【讨论】:

我尝试过使用 InvalidateRect,但什么也得不到。我只是尝试做 RedrawWindow 并且没有任何改变。我相信我用对了,RedrawWindow(refBox, IntPtr.Zero, IntPtr.Zero, RedrawWindowFlags.AllChildren);

以上是关于如何强制文本框更新其文本的主要内容,如果未能解决你的问题,请参考以下文章

如何强制文本框更新其文本

Javascript中,当鼠标点击选中某个文本输入框时,该文本框可以响应啥事件

jsp一个文本框在失去焦点的时候,显示其输入的值,如果没有输入该文本框获得焦点

如何在 shopify 产品页面上添加自定义文本框字段

jQuery:如果 DatePicker UI 更改,则更新某个文本框

强制绑定更新 Silverlight