TextChanged 事件响应交互更改

ssmartboy 2010-09-08 09:13:38
"TextChanged 事件如果通过编程修改或用户交互更改 Text 属性,则将引发此事件"我只想响应交互更改该怎么做,哪位高手能指点一下!!!
...全文
130 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ssmartboy 2010-09-08
  • 打赏
  • 举报
回复
bloodish,完全错误,思路太怪了!!!
bloodish 2010-09-08
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 bclz_vs 的回复:]
C# code

public partial class RemoveTextChanged : Form
{
public RemoveTextChanged()
{
InitializeComponent();

textBox1.TextChanged -= textBox1_T……
[/Quote]

修改一下



public RemoveTextChanged()
{
InitializeComponent();


textBox1.Text = "abc";
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
textBox1.TextChanged -= textBox1_TextChanged; //暂时删除事件
//随便你怎么改Text都不会再触发TextChanged事件
textBox1.Text = "abc";
textBox1.TextChanged += textBox1_TextChanged; //再重新注册

}



ssmartboy 2010-09-08
  • 打赏
  • 举报
回复
边城的思路,手段,领会能力都不错!佩服!
边城的刀声 2010-09-08
  • 打赏
  • 举报
回复

public partial class RemoveTextChanged : Form
{
public RemoveTextChanged()
{
InitializeComponent();

textBox1.TextChanged -= textBox1_TextChanged; //暂时删除事件
textBox1.Text = "abc";
textBox1.TextChanged += textBox1_TextChanged; //再重新注册
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
MessageBox.Show("我是事件触发的");
}


}
yeaicc 2010-09-08
  • 打赏
  • 举报
回复

/*
*代码如下可处理:
*/
private bool isIDo = false;
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (isIDo)
{
isIDo = false;
return;
}
if (textBox1.Text == "123")
{
textBox1.Text = "456";
isIDo = true;
}
}
边城的刀声 2010-09-08
  • 打赏
  • 举报
回复
可以专门写个方法

public void ModifyTextBoxWithoutEvent(TextBox txt,String value)
{

//删除OnTextChanged事件
txt.Text = value;
//再加上事件
}
glest 2010-09-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 computerfox 的回复:]

换一个思路吧

你希望在TextChange中用代码改变文本,又不希望触发TextChange事件,是不可能的。

你可以在TextChange事件中,当用代码修改文本时,设置一个全局的bool变量,然后在TextChange事件中,如果判断到是代码修改的,就特殊的处理?
[/Quote]

背抢先了
glest 2010-09-08
  • 打赏
  • 举报
回复
电脑不区分你是程序还是用户修改了Text。设一个全局变量,isChengxu,默认为False。编程修改是设为True。

如果为True,changed事件发生时,直接Return


捷哥1999 2010-09-08
  • 打赏
  • 举报
回复
换一个思路吧

你希望在TextChange中用代码改变文本,又不希望触发TextChange事件,是不可能的。

你可以在TextChange事件中,当用代码修改文本时,设置一个全局的bool变量,然后在TextChange事件中,如果判断到是代码修改的,就特殊的处理?
porschev 2010-09-08
  • 打赏
  • 举报
回复
ssmartboy 2010-09-08
  • 打赏
  • 举报
回复
只想响应交互更改,你是调用,意思不一样
苍穹无痕 2010-09-08
  • 打赏
  • 举报
回复
this.Invoke(Text_Change);

private void Text_Change()
{
...
}

111,129

社区成员

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

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

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