我有一个Textbox控件,它有时以编程方式更新,也可以由用户更新。 我如何区分这两个事件? 我想在用户更改文本时将“脏”标志设置为“真”。只有用户输入的c#textbox事件
回答
您可以使用文本框的键按下事件之前保存的价值。
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
//Insert the code you want to run when the text changes here!
}
这个事件是有效的文本框,但我想知道其他控制像NumericUpDown怎么样... – kaycee 2011-03-12 00:26:25
是的,这个解决方案不是所有控件的最干净。但是,numericupdown控件确实包含keydown事件和mousedown事件。我想你可以同时使用它们和追踪控件的值。另外,每次编程改变值时,你总是可以抛出一个布尔标志,然后检查控件的ValueChanged事件中的布尔标志(在继续处理之前将其设置回默认值)。这当然是一个非常简单的解决方案 - 可能不是最优雅的。 – 2011-03-12 13:39:54
如果用户用鼠标剪切并粘贴文本框中的数据,这不起作用。 – 2013-03-11 14:52:50
避免在编程完成时设置“脏”标志。禁用事件处理程序或设置一个标志,上面写着“这是代码,而不是用户”
在内联更改的持续时间内禁用事件处理程序是一个好主意。它还解决了用户将文本粘贴到框中时可能遇到的任何问题。 – 2016-06-22 08:46:38
尝试的onblur
这会引起用户离开现场的那一刻。
您可以解决它与聚焦状态一起编辑
好主意,但不是100%有效。会比我的回答“清洁”一点 – 2011-03-12 00:05:42
如果它不起作用,那么“清洁”就没有意义。简单地分离处理程序对于这种事情是非常标准的。 – 2011-03-12 00:12:01
他不是在谈论残疾人处理程序,而是关于额外的标志。那么,它是一个额外的国旗或额外的处理程序... – 2011-03-12 00:15:44
检查修改的属性。如果为true,则更改是由用户进行的,否则以编程方式更改文本。
- 1. 将清除用户输入的TextBox事件
- 2. WINAPI控件“编辑”-Textbox没有收到用户输入
- 3. C# - TextBox TextChanged事件没有触发
- 4. 有进入和离开事件TextBox - asp.net?
- 5. 使用C中的TextBox验证事件#
- 6. TextBox事件小问题 - C#
- 7. C#Textbox textchange属性事件
- 8. TextBox - TextChanged事件Windows C#
- 9. 鼠标输入事件,但只有当鼠标输入不在
- 10. C#图形用户界面保存输入文本(TextBox)
- 11. C输入只有小数
- 12. 定时器,只有用户输入
- 13. 在C#Winforms上验证Textbox的输入
- 14. 请求用户输入C#中的按钮单击事件
- 15. 用户只输入一次
- 16. 单击面板内的TextBox触发多次输入事件
- 17. 验证文本输入的Silverlight TextBox事件
- 18. KeyDown事件与用户输入验证
- 19. Textbox onchange事件
- 20. Textbox KeyPress事件
- 21. Textbox Textchanged事件
- 22. SQL Server:带有只读用户的unsanitized用户输入
- 23. 用户输入的C++ gethostbyaddr
- 24. 允许用户在C#中只输入某些数字,只有整数?
- 25. 在输入时触发ASP.NET TextBox事件按
- 26. C - scanf没有停止用户输入
- 27. 没有Javascript的TextBox OnClick事件
- 28. 问题有一个TextBox的LostFocus事件
- 29. 用户输入文件C编程
- 30. 让用户输入文件C++
你是[数据绑定](http://msdn.microsoft.com/en-us/library/ms752347.aspx)? – 2011-03-12 00:21:13
该控件没有数据绑定... – kaycee 2011-03-12 00:30:42