如何判断textbox的文本是被用户修改的?

蓝鹰 2015-04-14 08:14:15
对于这个问题,TextChanged事件以及keyDown,keyPress事件都不够用
因为我想要指定代码在用户对textbox有输入时被调用,这里所指的输入包括键盘输入,剪切和粘贴(可能是快捷键也可能是鼠标右键)
而不是 开发者在代码里调用了 textbox.text = "";
...全文
581 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
X-i-n 2015-04-15
  • 打赏
  • 举报
回复
引用 4 楼 rr12 的回复:

public class Form6
{
	private bool m_bCodeMod;
	private void TextBox1_TextChanged(object sender, EventArgs e)
	{
                // 开发者修改
		if (this.m_bCodeMod)
		{
			Interaction.MsgBox("Code Mod: " + this.TextBox1.Text);
		}
		else   // 用户修改
		{
			Interaction.MsgBox("User Mod" + this.TextBox1.Text);
		}
	}
	private void Button1_Click(object sender, EventArgs e)
	{
		this.m_bCodeMod = true;
		this.TextBox1.Text = "Code mod";
		this.m_bCodeMod = false;
	}
}

把 m_bCodeMod=false 放到 textchanged 触发代码的末尾比较好
蓝鹰 2015-04-15
  • 打赏
  • 举报
回复
引用 7 楼 starfd 的回复:
如果你一定要这样的需求,那简单的标志位根本无法满足你的需求,你不能用js调用相关click事件,必须将事件中的相关处理方法声明为function,然后js和click均调用这个function,设置标志位true/false代表这个是要增加标志位还是删除标志位
谢谢各位,其实我的最终需求是要在用户更改textbox中的数据后启用保存按钮。 昨天在吃饭时突然想到办法排除那些干扰项:就是在textchang中把textbox的文本和bindingsource当前项的值做对比,如果不相等就启用保存键。 这个方法已经满足了我的需求。再次感谢各位,分奉上
  • 打赏
  • 举报
回复
如果你一定要这样的需求,那简单的标志位根本无法满足你的需求,你不能用js调用相关click事件,必须将事件中的相关处理方法声明为function,然后js和click均调用这个function,设置标志位true/false代表这个是要增加标志位还是删除标志位
devmiao 2015-04-14
  • 打赏
  • 举报
回复
在textchanged里面加上条件
rr12 2015-04-14
  • 打赏
  • 举报
回复

public class Form6
{
	private bool m_bCodeMod;
	private void TextBox1_TextChanged(object sender, EventArgs e)
	{
                // 开发者修改
		if (this.m_bCodeMod)
		{
			Interaction.MsgBox("Code Mod: " + this.TextBox1.Text);
		}
		else   // 用户修改
		{
			Interaction.MsgBox("User Mod" + this.TextBox1.Text);
		}
	}
	private void Button1_Click(object sender, EventArgs e)
	{
		this.m_bCodeMod = true;
		this.TextBox1.Text = "Code mod";
		this.m_bCodeMod = false;
	}
}

X-i-n 2015-04-14
  • 打赏
  • 举报
回复
一个标志变量 flag,仅在代码更改文本框前flag=true.触发textchange时
如果 flag等于true说明是代码改的,执行相应代码,紧跟着在textchange的末尾保存文本内容,并设置flag=false.
如果textchange触发时,flag=false,说明是人工改的,执行对应代码,如果要恢复文本框内容,可以直接把之前保存的内容恢复过去。
zujinsheng 2015-04-14
  • 打赏
  • 举报
回复
mousedown, mouseup
江南小鱼 2015-04-14
  • 打赏
  • 举报
回复
声明一个公有变量,保存文本框最新的值 增加文本框失去焦点事件,对比文本框的值和公有变量保存的是否一致,触发你的事件(文本框值改变做神马事情),然后把文本框的值赋给变量

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧