我搜索了相关的帖子,但没有什么发现
我创建了一个用户控件。在我的用户控件中有一个文本框。我希望在用户控件中有一个事件,每当引发文本框TextChanged
事件时,该事件就会触发。
这就是我到目前为止所做的:
(This是用户控件的代码)
public event EventHandler txtchnged;
public void ontxtchnged()
{
txtchnged(this, EventArgs.Empty);
}
public MyTextBox()
{
InitializeComponent();
textBox1.TextChanged += textBox1_TextChanged;
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
ontxtchnged();
}
这里是我使用用户控制的地方
public RegisterMainFrm()
{
InitializeComponent();
myUserControl1.txtchnged += myUserControl1_txtchnged;
}
private void myUserControl1_txtchnged(object sender, EventArgs e)
{
Console.WriteLine("hello");
}
这是可行的,我知道代码可能不干净,但这不是问题所在。问题是:“你好”将在控制台打印两次,我真的不知道为什么和如何修复它。
2条答案
按热度按时间4jb9z9bj1#
来自TextBox上的MSDN。TextChanged:
注意:此事件在TextBox控件创建并初始填充文本时激发。
这可能是你的问题,你得到的初始事件?
更新:
从Adriano Repetti提示评论:是否通过双击设计器获得了textBox1_TextChanged事件处理程序?
然后,您已经向TextChanged事件添加了第二个钩子。
检查UserControl的InitializeComponent内的代码是否已挂接事件。
vkc1a9a22#
您可以在接受订阅之前执行检查。