我搜索了相关帖子,但我什么都没得到
我创建了一个用户控件。在我的用户控件中有一个文本框。我希望在我的用户控件中有一个事件,只要文本框TextChanged
事件发生,就会触发该事件。
这是我到目前为止所做的:
(这是用户控制代码)
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");
}
这有效,我知道代码可能不干净,但这不是问题。问题是:"你好"将在控制台上打印两次,我真的不知道为什么以及如何解决它。
答案 0 :(得分:2)
来自TextBox.TextChanged上的MSDN:
注意:创建TextBox控件时会触发此事件 最初填充文本。
这可能是你得到初始事件的问题吗?
更新:
来自Adriano Repetti的评论提示:您是否通过双击设计器获得了textBox1_TextChanged事件处理程序?
然后你在TextChanged事件中添加了第二个钩子。
检查UserControl的InitializeComponent中的代码是否已挂钩事件。